cd /news/ai-agents/cyber-chaos-monkey-staying-ahead-of-… · home › topics › ai-agents › article
[ARTICLE · art-168413] src=shopify.engineering ↗ pub= topic=ai-agents verified=true sentiment=↑ positive

Cyber Chaos Monkey: Staying ahead of security threats with AI agents

Shopify has deployed an agentic vulnerability hunter called the Cyber Chaos Monkey (CCM) that runs live against its production infrastructure and has executed tens of thousands of offensive engagements, identifying and acting on dozens of impactful findings without causing an outage or incident, the company said in an engineering post. The system is given live credentials and source, infrastructure and bug data, and is steered by the most capable cyber models to find novel ways to bypass Shopify's safeguards. Shopify said its bug bounty program has seen almost a 300% increase in reports since 2024 as frontier models drive the cost of vulnerability discovery toward zero.

read7 min views1 publishedNov 12, 2026
Cyber Chaos Monkey: Staying ahead of security threats with AI agents
Image: Shopify Engineering

We're obsessed with protecting merchant and buyer data. We reinvent our security programs relentlessly, throwing away what doesn't keep pace with the evolving landscape and challenging ourselves to multiply both the depth and coverage of our capabilities with AI.

Earlier in 2026, we described our agentic approach to discovering and fixing vulnerabilities in our software. Since then, we've developed an agentic vulnerability hunter that runs live against our production infrastructure. We hand this system live credentials and every possible thing we know about the system (like bugs, infrastructure, and source), then steer it using the most capable cyber models available to find novel ways to bypass our safeguards.

So far, our agents have executed tens of thousands of offensive engagements, identified and acted on dozens of impactful findings, without causing an outage or incident. We call this system the Cyber Chaos Monkey (CCM), and here's how we built it.

Finding vulnerabilities before attackers #

Across the industry, we’ve seen an explosion in vulnerability reports as frontier models drive the cost of vulnerability discovery towards zero.

We see evidence of this in Shopify’s bug bounty program, which has seen almost a 300% increase in reports since 2024. Needing to review, validate, and act on this volume of reports makes the program much harder to operate.

Our hypothesis is that, although frontier models give our adversaries unprecedented capabilities, those models are a rising tide that lifts all boats. We believe that, since we have a massive informational advantage when it comes to our own software systems, we can harness that asymmetry along with frontier models to: (1) find many of the most impactful security issues in our system before anyone else; and (2) make it prohibitively expensive for adversaries to find any issues we miss. Attackers target our production systems, so our testing has to as well. We built CCM so that testing doesn't put availability or merchant data at risk.

What is CCM? #

Conceptually, CCM is a graph-engineered agentic bug-bounty researcher with access to source code, threat intelligence, past reports, and infrastructure/deployment records. Just like a bug-bounty researcher, CCM has the ability to call live Shopify production infrastructure using live test shops and organizations.

The name is an homage to Chaos Monkey, a tool Netflix introduced in 2011 to randomly shut down production instances, ensuring their services could survive real failures without customer impact as they moved to AWS. The practice has since grown into the discipline of chaos engineering, which focuses on experimenting on production systems to build confidence in their behavior under adverse conditions. Tobi regularly releases Chaos Monkeys across Shopify, like an annual deletion of recurring meetings from our team’s calendars.

With CCM, we are applying chaos engineering to security by deliberately attacking our own production systems to find weaknesses before they can impact our merchants and buyers.

Architecturally, we separate the system into two basic components: Discovery and Sandbox.

Each CCM engagement is an investigation into a potential vulnerability or an attempt to achieve a specific security objective. That can start with an idea, hypothesis, or report originating from a human security engineer; other upstream security agents; or feedback loops within our Discovery tool itself. These can be specific (“find similar risks to a bug bounty report in other places”) or abstract (“achieve RCE on Shopify admin”), and they kick off six steps:

Step 1: These ideas are sent as input to Discovery. #

Step 2: The latest cyber models are used to refine the idea, and identify places in the code or configuration that may lead to a vulnerability. #

Step 3: When Discovery identifies a promising lead, it sends structured data describing potential issues to the Sandbox where our agents try to exploit the bug. #

Step 4: Hands-on testing, like installing packages and building fuzzers. Unsurprisingly to any offensive security engineer, we have found that one of the most powerful primitives agents use in the Sandbox is making live requests to Shopify, reading our production logs to see how the request was processed, reconciling it against source code, and iterating. #

Step 5: When the Sandbox agents have completed testing, any findings are put into a report that is sent back to Discovery and upwards. #

Step 6: Discovery analyzes the results, and executes feedback loops that may generate further engagements.

How do we keep CCM safe? #

Recent incidents, where AI agents in security testing reached systems they were never meant to touch, show why containment has to be built in from the start. We have engineered a set of layered security controls that address both technical risks (e.g., leaking credentials, breaking out of the network) and fundamental risks to alignment (e.g., the agent not following our Rules of Engagement).

Technical controls

CCM is a standard containerized workload and we use best-practice security controls throughout the architecture. Every CCM engagement has a corresponding k8s job. The Job pod has a handful of containers running, and the application controller is a state-machine-based orchestrator. Everything else is deferred to sidecar containers (like maintenance tasks and the offensive agent itself).

Credential proxy : When calling our "knowledge" services or model providers, the agent passes a placeholder header in a request to a credential proxy. This replaces the placeholder with a real credential and sends the request via an egress proxy. There is strict control on which headers can be injected into which domains, and the credentials themselves rotate regularly. #

Egress controls : Our egress proxy is effectively an allowlist on top of nginx, and egress proxy pods are the only ones capable of exiting the VPC. We allow only Shopify production domains, our knowledge services, model providers, and a select set of package managers (e.g., our own package proxies).

Managing alignment risks

We manage alignment risks in two ways. First, we supply a strict set of Rules of Engagement (RoE) to every agent. The rules leave the agent free to try any exploit against its target, and set hard limits on what it may do once an exploit works, such as moving to other systems or retaining access.

Second, we don't trust that the execution agent will maintain alignment throughout its task execution. Instead, we rely on two-person integrity (TPI), the idea that a second party must review the work of the acting party to confirm it does not pose a security risk. TPI is commonly used to protect the most sensitive information in governments, and to conduct the most risky red team operations. For CCM, our novel twist on TPI is to use a second agent that is differently prompted and aligned than the agent executing the engagement.

In practice, we do this by feeding the session logs from our offensive agent into a separately aligned agent (i.e., using a different model) in real time. If that agent identifies risky behavior that's incompatible with the RoE, the second agent makes a tool call that instantly kills the offensive agent. The "judge" agent reads all events from the "executor" session, including responses, thinking, tool calls, and tool call results.

We’ve designed our system to require explicit positive control as diagrammed above: if the "judge" times out, crashes, or fails to adjudicate messages from the "executor," the run ends. The orchestrator that implements this TPI is the pod’s main application container, with the "executor" and "judge" running as native sidecar containers within the same pod. The orchestrator maintains a heartbeat signal with both “executor” and “judge.” If either dies, the orchestrator container will exit. The pod's restart policy prevents the orchestrator from restarting, so k8s tears down both sidecars and the job terminates.

Keeping everything pod-local (but isolated) reduces the risk of network partitions disrupting the communication between the “orchestrator,” “executor,” and “judge.” Similarly, an eviction triggered by k8s will terminate every container in the pod, so evictions can’t leave “execution” containers running without their paired “judge” and TPI is never at risk.

Putting our advantage to work #

CCM is a bet on asymmetry. Frontier models lower the cost of finding vulnerabilities for everyone, but we know our own systems better than any outside attacker ever will.

Using the same class of models with that informational advantage lets us reach the most impactful issues first. It simultaneously drives up the cost for external parties to achieve the same result, by forcing attackers to compete with agents that work around the clock and start with the full picture.

── more in #ai-agents 4 stories · sorted by recency
── more on @shopify 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/cyber-chaos-monkey-s…] indexed:0 read:7min 2026-11-12 · —