← FIELD NOTES / EVIDENCE FILE 002

DEVELOPING INCIDENT · CREDENTIAL SECURITY · OCTOBER 2026

The OpenCode breach.
Your keys. Someone else’s bill.

A weekend breach at an AI coding service put linked provider credentials at risk. The lesson reaches beyond one product: a tool that holds your API key also holds a route to your account’s spending power.

Conceptual terminal diagram: a provider key entrusted to Console, with a separate route from a copied key directly to the provider
THE BORROWED KEY / Editorial diagram of credential risk, not a forensic reconstruction of the intrusion.

THE CONFIRMED DISCLOSURE

A breach of Console. Not a finding that every OpenCode installation was hacked.

On Saturday, October 17, OpenCode reported a security breach affecting 1.4% of its Console users. The company said the affected group had external providers linked, had been notified by email, and that it was working with Anthropic, OpenAI, and Google. It described the incident as related to a large-scale distillation attack.

Those are the company’s statements. The public material reviewed for this article does not establish the initial exploit, identify the attacker, or demonstrate a compromise of every local OpenCode client. Keeping that boundary clear matters for both the response and the eventual lessons.

01 / A weekend, reconstructed

These times describe disclosures and reported events, not a complete forensic timeline. All times below are UTC.

WhenWhat the record says
October 17 · 00:30A customer notice reproduced in BleepingComputer’s reporting gave this as the earliest possible exposure time. That is an exposure boundary, not a verified time of initial entry.
October 17 · 17:56OpenCode’s initial public statement disclosed the breach, the 1.4% figure, and coordination with the three providers. It said the incident was ongoing at that time.
October 17 · 18:08An expanded statement specified a subset of users with external providers linked and said people who had not received an email were not impacted.
October 18Cofounder Dax Raad reported persistent attack attempts over the preceding 48 hours. Separately, one affected user reported that Google Cloud had resolved their issue.

The initial “ongoing” description should not be treated as a live status indicator on October 19. The reviewed disclosures also do not amount to a final technical postmortem.

02 / The product becomes a wallet of keys

OpenCode’s current Console documentation describes a service that stores provider credentials and routes model requests through a gateway. Workspace members can use the configured provider without seeing its underlying key. That is useful delegation: access becomes easier to manage across a team.

It also creates a trust boundary. A provider credential is more than a preference setting. Depending on its permissions, possession can authorize requests against the issuer’s account. A service holding credentials therefore needs protection appropriate to the capabilities those credentials confer.

Cyera’s incident analysis, citing the customer notification, described a legacy Console system being retired and warned that linked provider API keys may have been exposed. This is an account of the notice, not independently published proof of the entry mechanism. Current product documentation explains the general delegation model; it cannot establish exactly how the affected legacy system stored or protected keys.

Why closing the app may not stop the bill

The risk model is straightforward: if a usable key is copied, a request can potentially go directly to the provider without passing through the tool that originally held it. Closing the coding application or disabling a model in its interface does not necessarily invalidate that credential at its issuer.

Console’s documented budgets control requests handled by Console. Our architectural inference is that such a gateway limit cannot govern requests that bypass the gateway. Provider-side enforcement is a separate control. A spending alert, an application budget, and a revoked credential are three different things.

That distinction is the heart of this disaster pattern. The visible application can appear quiet while a credential remains usable somewhere else.

03 / “Distillation attack” describes a purpose, not an entry point

Distillation uses outputs from one model to help train another. It has legitimate uses. In the security context, Anthropic describes distillation attacks as unauthorized campaigns to extract a model’s capabilities and reproduce them in another system.

OpenCode linked this breach to such an operation. That suggests an alleged objective for consuming model access; it does not explain how the attacker entered Console or acquired credentials. Those are separate questions.

Nor does the description establish who ran the operation, whether a resulting model was successfully trained, or how much activity was attributable to it. A complete account would connect the access event to observed request patterns and explain the basis for the attribution. Until that evidence is public, “distillation attack” remains OpenCode’s characterization of the incident.

Raad’s statement about relentless attacks is important operational context, but a social post is not a substitute for access logs or a technical reconstruction. There is no basis in the reviewed record to turn this into a claim that a particular company’s autonomous agents carried out the breach.

04 / A small percentage can still mean a serious incident

The denominator in OpenCode’s statement is Console users. It is not all developers using OpenCode, all provider accounts, or all AI coding-tool users. No absolute affected-user count is established here.

BleepingComputer reported user complaints about unauthorized charges and a suspended Google Cloud project. These reports indicate potential financial and operational harm, but they do not establish a verified aggregate loss. Individual examples should not become an invented average.

One affected user, Alex Spînu, publicly reported a project suspension, then said the issue had been resolved and praised the communication from OpenCode and Google Cloud. Both parts belong in the account: disruption occurred according to the user, and the user subsequently reported a successful response.

A compromised key can also create uncertainty beyond its immediate bill. The permissions attached to it determine what else needs investigation. The evidence reviewed here does not establish a general theft of source repositories or every user’s prompts, and it would be wrong to imply one.

OpenCode’s statement that unnotified users were unaffected is useful guidance from the service operator. It is not an independent audit of every account. Affected users should follow the notice; anyone seeing unexplained provider activity should investigate that activity regardless of whether an email arrived.

05 / If you had a provider linked

This is a containment checklist for potentially exposed credentials, not a finding that every reader’s account is compromised.

  1. Read the actual notification. Identify the affected workspace, provider, and credentials. Open the service and provider dashboards directly; do not paste keys into a reply, public issue, or supposed verification form.
  2. Revoke exposed keys at the issuer. Creating a replacement does not by itself invalidate the old key. Inventory legitimate consumers, replace their credentials, and verify that the old credential is disabled. Do not delay containment of active misuse merely to preserve uninterrupted service.
  3. Review provider activity and billing. Check the reported exposure period and surrounding activity. Preserve timestamps, usage exports, and relevant billing records before they become harder to retrieve. Record the time each key was revoked.
  4. Check what the key could access. Review permissions, projects, and any relevant logs. Where supported, give replacement keys narrower access and separate keys by service so future revocation has a smaller impact.
  5. Verify spending controls. Determine which controls actually block requests and which only send alerts. Confirm whether enforcement belongs to the provider or an intermediary.
  6. Ask the provider to review suspicious charges. Supply account identifiers and evidence through official support channels. A reported resolution for one user is not a blanket reimbursement promise.

Cyera’s rotation guidance likewise emphasizes replacing exposed credentials and reviewing provider usage. Google’s API-key documentation explains restrictions and key handling for its platform. Follow each issuer’s instructions for the particular credential involved.

06 / What the postmortem needs to answer

The strongest next disclosure would go beyond a percentage and a description of the attacker’s presumed goal:

  • What was the initial access path, and when did unauthorized access begin?
  • Which credentials and permissions were exposed, and how were they stored?
  • What did retiring the legacy system mean for retained credentials and access?
  • When were affected keys invalidated, and which actions required the customer?
  • What usage was confirmed unauthorized, and how will billing disputes be handled?
  • What evidence connects the intrusion to distillation activity?

A system being retired can still hold production authority. That is a general engineering lesson, not proof that retirement caused this breach. Decommissioning should end with verified deletion or revocation of retained authority, not merely a quieter interface.

THE COMPUTER DISASTERS LESSON

Your trust boundary follows the credential.

AI tools make it easy to connect a provider and get back to work. The invisible part is the continuing authority granted by that connection. Teams need to know where keys live, what they can do, how to revoke them, and whether their spending controls still work when traffic takes another route.

The OpenCode disclosure is a concrete reason to rehearse that response. The unresolved details should sharpen the questions we ask, not tempt us to fill in the missing exploit.

Map the failure modes in your own system →

Sources & method

This article reviews public statements, incident reporting, and product documentation. We did not examine private logs or independently validate user bills. Company claims, individual reports, and our architectural analysis are distinguished throughout. The illustration is explanatory and contains no purported leaked material.