- Editor extensions installed only from an approved, mirrored list
- No long-lived production or client credentials on developer laptops
- All AI model access through one gateway with per-team keys, limits and logs
- Only signed, verified builds admitted to client environments
- A rehearsed playbook for a compromised developer tool
Anonymised composite. Client names, identifying details and confidential figures are withheld; public facts are cited in the references.
The situation
A software house based in the UAE built and ran systems for banks, insurers and government entities across the Gulf. Its engineers had embraced AI: coding assistants in their editors, AI-native editors with their own extension marketplaces, hosted AI development platforms for experiments, and personal API keys for several model providers. Developers had local admin rights, long-lived cloud credentials and, in some cases, access to client environments from their laptops.
Why now. October 2026 made the risk concrete. On 29 October, tampered versions of the Claude Code extension were listed in Cursor's extension marketplace for a few hours; Microsoft's analysis describes a loader that tried to add an attacker SSH key and open a reverse tunnel on developer machines12. Days earlier, a Wiz Research report described a month of breaches at AI developer platforms, with stolen AI credentials feeding LLMjacking, the resale of model access3. For a firm whose clients sit under the UAE's tightening expectations on cyber resilience and supply-chain security4, "a developer's editor was compromised" could not be allowed to mean "a client was compromised".
What had to be true
- Only approved extensions and tools on developer machines, updated deliberately rather than automatically.
- No long-lived secrets on laptops: nothing on a developer machine that can reach production or a client on its own.
- One governed route to AI models, with per-team keys, limits and logs.
- Only verified builds reach client environments.
- Productivity kept: engineers still use AI assistants every day.
Architecture
The data flow, end to end
- CodeAn engineer writes code with an AI assistant on a managed machine
- AskAssistant calls go through the AI gateway with the team's key, not a personal one
- CommitCode is pushed; secrets scanning blocks any credential in the change
- BuildEphemeral CI builds, signs the artefact and records its provenance
- AdmitThe client environment admits only artefacts with a valid signature
- OperateProduction access is granted just in time, never from standing laptop credentials
The hard part: controlling extensions without killing productivity
Extensions are the riskiest software on a developer's machine: they run with the user's rights, auto-update silently and can come from marketplaces the company does not control. The Cursor incident showed that even a well-known extension name is not a guarantee, and that auto-update can push a tampered build to thousands of machines in hours2.
Banning extensions would have failed; engineers would have worked around it. Instead the team built a private mirror. Approved extensions are pulled, scanned and pinned to a version; editors are configured to install only from the mirror; and updates are promoted after a short delay and a check of the publisher's security notices. Requests for new extensions go through a lightweight review with a target turnaround, so the approved list grows with real needs.
The second control was removing what a compromised extension could steal. Long-lived cloud keys, client VPN profiles and personal model API keys were taken off laptops. Developers get short-lived credentials for the task at hand, and AI calls use the gateway, so a stolen key from a laptop or a third-party platform is limited by the gateway's quotas and visible in its logs. See AI coding policy for engineering teams and keeping secrets out of state.
Assume one developer tool will be compromised. Design so that the worst it can do is change code that review and signing will catch, not reach a client or spend unlimited money.
The last line: only verified builds reach clients
Even with good endpoint controls, code can be tampered with. The final check sits at the client environment: only container images signed by the firm's CI, with recorded provenance, are admitted. Kubernetes supports this pattern through admission policies that validate image signatures before a pod is allowed to run5.

How it ran
- Incident triage
- Extension review
- Detection rules
- Private mirror
- AI gateway and secrets
- Signing and admission
- Extension requests
- Team AI budgets
- Adoption and feedback
- Check for known indicators
- Rotate exposed keys
- Disable auto-update
- Approved extension list
- AI gateway
- Team keys and limits
- Short-lived credentials
- Client access just in time
- Secrets scanning
- Signed builds
- Admission policies
- Compromised-tool drill
Key decisions and trade-offs
| Decision | Alternative | Why |
|---|---|---|
| Private extension mirror | Ban extensions or allow any | Keeps productivity, removes silent updates |
| AI access through a gateway | Personal API keys | Limits, logs and quick revocation |
| Short-lived credentials | Long-lived keys on laptops | Stolen credentials expire before they are useful |
| Signed builds and admission checks | Trust the CI pipeline | Tampered code cannot reach clients unnoticed |
| Separate access per client | Shared credentials across clients | One incident cannot spread between clients |
What I'd do again, and differently
Again: give engineers a fast path to request tools. The mirror only works if it says yes quickly to reasonable requests. Differently: put the AI gateway in place before AI tools spread, not after. Personal keys scattered across laptops and platforms were the slowest thing to clean up. Related: the 1 November tech news, the Binance hack: architecture lessons, hardening a utility's management plane and the UAE page.
If your teams use AI coding tools and serve regulated clients, see my fractional CTO work, or analyse your challenge and bring the result to a call.
- 1Inside a malicious Claude Code-branded extension and its persistent SSH backdoorMicrosoft Security · 30 Oct 2026
- 2
- 3Black October: LLMJacking Wave Exposes AI Infrastructure's Credential CrisisFuturum Group · Oct 2026
- 4Cybersecurity 2026: UAE, Trends and DevelopmentsChambers and Partners · 2026
- 5Verifying Container Image Signatures Within CRI RuntimesKubernetes blog · 29 Jun 2023