All briefings
Optimus Labs · CivilizationsHIGH · LIVE INCIDENT · VENDOR BREACH

Live incident, as of Oct 21, 2026. This page will be updated as OpenCode shares more.

OpenCode Console Breach: Your Provider Keys, Their Custody

An intruder reached a legacy OpenCode Console system and may have exposed provider API keys that teams saved there, for 1.4% of Console users. OpenCode has not said how.

Vendor breachAIAI Asset Supply Chain SecurityCHCyber Hygiene

Organizations in this briefing

OpenCodeOpenCode
Anomaly, the company behind OpenCodeAnomaly
AnthropicAnthropic
OpenAIOpenAI
GoogleGoogle

Key takeaways

3 min read
  • Live incident as of Oct 21, 2026. OpenCode says a breach of its hosted Console, tied to a large scale distillation attack, may have exposed Anthropic, OpenAI and Google API keys for 1.4% of Console users. Revoke any key ever saved in Console at the provider. No root cause, entry point or key count has been published.
  • Blast radius: Teams that saved their own provider keys in an OpenCode Console workspace. Keys used only in the local OpenCode app never reach OpenCode's servers, per co-founder Dax Raad. Some exposed keys were used to run up charges before the providers cut them off. User-reported charges run from about $200 to $1,700 on a single account, none verified by OpenCode.
  • HIGH · LIVE INCIDENT · VENDOR BREACH

Timeline

  1. Earliest possible exposure of stored keys

    Per OpenCode's follow-up email (BleepingComputer).

  2. OpenCode posts on X

    Breach "related to a large scale distillation attack", 1.4% of Console users.

  3. OpenCode emails affected users

    "Action Required: Potential provider key breach".

  4. Anthropic revokes keys

    Lydia Hallie says Anthropic revoked Claude API keys it believes were affected.

  5. Google blocks keys

    Evan Otero says Google blocked exposed Gemini keys; some users report project suspensions for "abusive activity consistent with hijacked resources".

  6. Dax Raad scopes the breach

    "this is the OpenCode Console, not OpenCode itself, those keys never come to us".

  7. Attacks continue; refunds underway

    Dax Raad says attackers had been "non stop trying to attack our systems for the past 48 hours".

  8. OpenAI refunds credits

    Tibo Sottiaux says affected API customers are "back in business" and credits drawn in the attack are being refunded.

  9. Oct 21: No root cause, entry point, dwell time or key count published; incident described as ongoing

Blast radius
Teams that saved their own provider keys in an OpenCode Console workspace. Keys used only in the local OpenCode app never reach OpenCode's servers, per co-founder Dax Raad. Some exposed keys were used to run up charges before the providers cut them off. User-reported charges run from about $200 to $1,700 on a single account, none verified by OpenCode.
Classifiers
AI: AI Asset Supply Chain Security · CH: Cyber Hygiene

Summary

Live incident, as of Oct 21, 2026. On the night of Oct 16, an intruder reached a legacy OpenCode Console system that the team was shutting down. Console is OpenCode's hosted gateway: teams save their own Anthropic, OpenAI and Google API keys there so members can use the models without seeing the keys. OpenCode describes the breach as related to a large scale distillation attack and says 1.4% of Console users may have had keys exposed. Anthropic revoked affected Claude keys, Google blocked affected Gemini keys, and OpenAI says it is refunding credits drawn in the attack. As of Oct 21, OpenCode has not published a root cause, entry point, dwell time or key count.

Am I affected?

Any single yes means treat this as an incident.

  • Did anyone on your team save an Anthropic, OpenAI, Google or other provider key in an OpenCode Console workspace?
  • Did you receive OpenCode's email 'Action Required: Potential provider key breach' or the follow-up listing keys by last four characters?
  • Does provider billing from Oct 16 on show models, volumes or regions you do not recognise?

Not affected if

Console only logs requests that pass through its own gateway, so a copied key used directly with the provider never shows up there. Empty Console logs do not clear you. The provider's billing page is the record that counts.

Console holds your keys, not the app

  • Console is OpenCode's hosted gateway. A team saves its own provider keys in a workspace, and members use the models through Console without ever seeing the keys.
  • That makes Console a third-party service in the path between a coding agent and the model, and it held live credentials for three labs at once. Keys used only in the local app never reach OpenCode, per Dax Raad.

Why a coding tool got pulled into the distillation fight

  • Distillation means pulling a strong model's answers at scale to train a cheaper copy. Anthropic says distillers mostly work through proxy networks of fake accounts and "will often use stolen API credentials belonging to legitimate companies or individuals" (Anthropic threat report, Sep 2026).
  • On Oct 12 Anthropic said new defences cut the data distillers harvest by 90 to 99%, often ban distillation accounts within two hours, and stop API accounts created on or after Aug 31, 2026 from editing earlier context on its newest models.
  • Our read, not OpenCode's: every one of those controls makes an established, paying customer's key worth more, because it comes with real billing, a normal usage history and, at Anthropic, an account older than Aug 31. A hosted gateway that holds such keys for three labs is the obvious place to look. OpenCode has not said how the breach and the distillation activity connect.

Scale: why OpenCode is infrastructure now

How it maps to OWASP

  • Two lists from the OWASP GenAI Security Project cover this from different sides.
  • Top 10 for Agentic Applications 2026 covers the credentials agents run on: ASI03 Identity & Privilege Abuse (OWASP counts any authentication material, such as API keys, OAuth tokens and delegated sessions, as part of an agent's identity) and ASI04 Agentic Supply Chain Vulnerabilities (Console is a third-party service in the agents' path to the model, and it was compromised).
  • Top 10 for LLM Applications 2026 covers what was done with them: LLM02:2026 Sensitive Information Disclosure (credentials and API keys are named as protected information) and LLM06:2026 Unbounded Consumption (includes "Model Extraction and Distillation Theft" and stolen credentials used to run expensive computation).
  • Neither list explains the break-in itself; if the entry point turns out to be an ordinary web or infrastructure flaw, it sits outside both.
  • The two lists agree on the fix: short-lived, narrowly scoped credentials per agent (ASI03) and a hard per-key spending limit that stops inference rather than an alert after the bill (LLM06).
  • The OWASP GenAI Security Project does not endorse any product, service or tool, including Optimus Labs. We cite its lists to classify this incident.

If you hold other people's keys

Provider keys are crown jewels.

Any vendor that stores a customer's API key for them (a model gateway, an agent platform, an observability or CI tool) is one intrusion away from this same incident. OpenCode has not said how its stored keys were protected, so none of this is a finding about Console. It is the path we would expect a vendor to follow, drawn from OWASP and NIST key-management guidance.

  1. Hold less

    1. Store less

    Use short-lived, scoped credentials or delegated access wherever a provider offers them. Many model providers still issue long-lived static keys, so a gateway often has to store them. Where the design allows, pass a key through for one request without saving it.

  2. At rest

    2. Use envelope encryption

    A unique data key per credential, AES-256-GCM, with the data key wrapped by a master key in a KMS or HSM. OWASP says not to keep encryption keys next to the secrets they protect unless those keys are themselves encrypted.

    The master key wraps the data key, and the data key seals the customer's provider key.
  3. 3. Separate customers

    One master key per customer, and bind each ciphertext to its customer and record so a copied blob will not decrypt in another row. Deleting a customer's key then makes their stored credentials unrecoverable.

  4. 4. Make stored keys write-only

    No reveal button and no export. Show the last four characters and the date it was set. Never log a key: strip authorization headers from logs and error reports.

  5. In use

    5. Decrypt per use, and watch it

    Decrypt only for the outbound call, wipe the plaintext from memory, and keep any cache short. Log every decrypt and alert on spikes, so a bulk pull stands out.

  6. Beyond the vault

    6. Retire systems completely

    Before a system is decommissioned, move or delete the credentials it holds and confirm they are gone. Any system still holding live keys is still in scope.

  7. 7. Give customers the brakes

    Per-key spend caps that stop traffic, model and IP allowlists, last-used time and source for every key, and plain revoke steps for each provider.

  8. 8. Plan the breach before it happens

    Keep a per-customer list of stored keys by last four characters, agree a revocation contact with each provider ahead of time, and tell customers in hours, not days. Anthropic and Google acted on Oct 17, within about a day of the first alert, and a pre-agreed route makes that routine.

What we still don't know

  • As of Oct 21, 2026:
  • How the intruder reached the legacy system and when that access ended.
  • How many users and keys the 1.4% represents.
  • Whether stored keys were encrypted, and with what.
  • How the key exposure connects to the distillation OpenCode described.
  • Who is behind it. No one has been publicly named.
  • Whether Anthropic and Google will refund charges the way OpenAI says it will, and on what terms.

Remediation

Contain now · 0-24h
  • Revoke every key ever saved in a Console workspace at the provider (Anthropic, OpenAI, Google and any others) and confirm the old key no longer works.
  • Check provider usage and billing from Oct 16 on for models, volumes or regions you do not recognise. Keep records for refund claims.
  • For charges you did not make on Google, contact Google Cloud Billing support from your account, as Google advises.
Investigate · 24-72h
  • In the Console workspace, check Logs (every inference request, kept 30 days), Audit (every configuration change; look for changes nobody on your team made) and Controls (with no policies set, every member can use all enabled models with no spend limit).
  • Treat empty logs as inconclusive, and compare them against provider billing.
Harden the agent surface
  • Keep provider keys in a secrets manager you control (HashiCorp Vault, AWS Secrets Manager, GCP Secret Manager), not in a vendor's workspace.
  • Route model calls through a gateway you run that pulls keys at runtime.
  • Give each tool its own key, rotate on a schedule, and set a hard spending cap that stops traffic. Watch spend per key and alert on spikes.
  • Ask any vendor that holds your keys how stored keys are encrypted and who holds the encryption keys, when stored credentials are deleted after a system is retired, whether you can see per key when it was last used and from where, and how fast and through which channel they will tell you about a breach.
For vendors that store customer credentials
  • Apply the eight practices in 'If you hold other people's keys' to every stored credential.
  • Verify that decommissioned systems no longer hold live keys.

Indicators

  • Email subject: Action Required: Potential provider key breach
  • Provider-side signal: Google project suspension for abusive activity consistent with hijacked resources
  • Exposure window start: Oct 17 2026 00:30 UTC per OpenCode's follow-up email
  • No CVE assigned to this incident

Sources

Sourcing & confidence

Confirmed by the vendor

Assessed by Civilizations

  • The link between exposed keys and distillation is OpenCode's description and our read, not a disclosed finding.
  • User-reported charges are unverified.
  • The 1.4% is OpenCode's figure; no key count has been published.

Vendor perspective · Optimus Labs

How Optimus Labs finds OpenCode exposure in your tenant

The Optimus Labs sensor shows where OpenCode is installed: the CLI, the desktop app and IDE extensions, per device and per owner.

It shows which devices have OpenCode's hosted providers linked (Console, Zen or Go). Those are the people most likely to have saved provider keys in a Console workspace.

It shows which provider keys OpenCode holds on each device, as metadata only. We never read or store key values.

Limit: keys pasted into the Console website live on OpenCode's servers, not on the device, so Optimus Labs cannot see them. Optimus Labs finds the people likely to be in scope, and they confirm against OpenCode's email and their Console workspace.

OpenCode Desktop providers settings page listing OpenCode Zen and OpenCode Go at the top, both marked Recommended, above Anthropic, GitHub Copilot and OpenAI.
OpenCode Desktop v1.19.0: OpenCode (Zen) and OpenCode Go sit at the top of the providers list, both marked Recommended, above Anthropic, GitHub Copilot and OpenAI.
OpenCode Desktop Connect Zen dialog asking for a single API key from opencode.ai/zen.
Connecting Zen: one API key from opencode.ai/zen gives access to Claude, GPT, Gemini, GLM and more. Once a device has that link, it shows up in Optimus Labs.
Optimus Labs Agent Inventory filtered to opencode, showing the OpenCode CLI and desktop app, both active and both marked Shadow.
Inventory, Agents, searched for 'opencode': the CLI and the desktop app, both active and both marked Shadow. Demo tenant.
Optimus Labs OpenCode agent page showing version, owners, sessions, token use, most used model and related agent assets.
The OpenCode agent page: version, owners, sessions, token use, most used model and the 34 agent assets around it. Demo tenant; numbers are illustrative.
Optimus Labs model page for space-bunny-free tracing the model back to OpenCode and a single user, with the user's name greyed out.
The model view traces space-bunny-free back to OpenCode and the one person running it. It is a free model served through OpenCode Zen, so seeing it means that device is talking to OpenCode's hosted gateway. Demo tenant; name greyed out.
See it on your own stack

Related briefings

CRITICAL · AGENT COLLECTIVE

700 Agents. 4 Zero-Days. No Human.

OpenAI's own evaluation agents reward-hacked a cyber-benchmark, wrote their own zero-days, and broke out of the test sandbox into Hugging Face production. The first agent-collective breach of a live third party.

Read

Optimus Labs · Civilizations

Get the next briefing first

Threat research, disclosures, and practical tips on enterprise Agentic AI attack surface management, directly in you or your agent's inbox.

Subscribe