The gap between losing a tenant and containing a machine insider is a 30-minute window, one control plane, and knowing an agent's effective access before the alert fires.
Report-only alerts lose to automated attackers because human triage runs on shift time (4 to 24 hours) while token abuse completes in minutes. - Real containment means revoking the OAuth grant, killing the agent session, and blocking the specific action chain, not taking the app offline for the whole company. - Scoping decides everything. Cut the wrong session and you break production; cut the right one and you hold the blast radius to a single identity. - The decision turns on effective access, meaning what the compromised agent can actually reach inside each connected app, not what its theoretical configuration says. - Autonomous runtime enforcement is available today for Claude and Microsoft Copilot only, through a Cloudflare-first "Intel Inside" model. Every other platform gets discover and govern today, with enforcement on the roadmap. - Obsidian is not an inline hop. It is the decision engine that tells the enforcement point which token, session, or non-human identity to cut.
SaaS breach containment is the 30-minute window between spotting a compromised agent and cutting its access, before data leaves your tenant. Report-only detection cannot hold that window. It watches an agent do something suspicious, writes a log, and pages a human. That was enough when the attacker was a person at a keyboard. It is not enough when the attacker is a stolen OAuth token being replayed by a script at machine speed.
The scale problem is structural. Agents move roughly 16 times more data than the humans they work alongside, so a compromised one reaches further in the same number of seconds. The Salesloft Drift campaign reached around 700 organizations because bearer tokens were replayed faster than any SOC could work the queue. Legitimate integration traffic and malicious traffic looked identical. By the time an analyst opened the ticket, the data was already gone.
Here is the mechanism. An automated attacker chains three moves in under a minute: replay the token, run the query, push the results to an endpoint it controls. If your containment path runs through a ticket, an on-call ping, and an admin signing into a console to revoke access, the incident is over before anyone acts.
Slow containment compounds in four directions at once: more data leaves, more systems get reached through agent-to-agent chaining, the notification window stretches, and regulatory exposure climbs with it. The Salesloft Drift blast radius is the clearest example on record. One delayed containment did not stay one incident; it cascaded into hundreds of downstream ones across connected tenants.
Effective containment blocks four specific things: the compromised OAuth token, the agent session riding on it, the downstream tool calls, and the data path out to the attacker. It does not mean taking Salesforce offline for everyone. Here is what a real action looks like at minute 12 of an incident.
| Action | Report-only approach | 30-minute containment |
|---|---|---|
| Revoke OAuth grant | Ticket to IT, 4 to 24 hr SLA | Automated via API, under 60 sec |
| Kill agent session | Manual admin console | Runtime action, immediate |
| Block tool call chain | Not possible without an inline hop | Edge decision, sub-second |
| Preserve legitimate access | Full app shutdown risk | Scoped to the affected identity only |
The point is that containment is surgical. You cut the compromised path, not the artery that keeps the business running.
The sequence is fixed. Skipping a step to save time almost always costs more time later.
Minutes 0 to 5, confirm and scope. Verify the alert against actual runtime behavior so you are not chasing a false positive. Identify the specific token, agent, or session. Pull the effective access map for that identity.
Minutes 5 to 15, contain. Revoke the OAuth grant at the identity provider, and revoke the refresh token with it. Kill active sessions using the compromised credentials. Block the specific tool call chain at the enforcement point. Preserve logs first, because panic revocations are how evidence gets wiped.
Minutes 15 to 25, verify. Confirm no new session can spawn from the revoked grant. Check for lateral movement into sibling agents. Validate that legitimate users are still working.
Minutes 25 to 30, hand off. Document the action chain for the IR team, preserve the runtime evidence for forensics, and start the notification clocks.
These are not the same job, and treating them as one is how teams lose the window. Containment is the 30-minute action: stop the bleeding, cut attacker access, keep production up. Incident response is the multi-day process: find root cause, notify stakeholders, remediate the underlying weakness, update controls. Containment feeds IR; it does not replace it. Teams that jump straight to forensic imaging and war-room meetings skip the only step that was time-bound.
The containment decision hinges on effective access, not theoretical configuration. Before you revoke anything, you need to know what the compromised agent can actually reach inside each connected app: which service account it assumed, which objects and rows it can read, which actions it can invoke. Around 90 percent of agents are over-permissioned, so the reachable surface is almost always wider than the config page implies.
A Copilot agent labeled "read-only" may inherit maker-mode credentials that hand it admin-level Salesforce access. Revoking its Microsoft token does nothing to the Salesforce path. You have to cut both, and you only know that if you have mapped the effective access ahead of time.
The scoping model runs in order:
Obsidian's identity graph produces this map continuously, correlating each agent's real activity back to what it can touch inside the third-party app. When the incident hits, the decision is already made: this token, this agent, these downstream connections. No live investigation, no guesswork. That is what runtime truth buys you. A team reviewing theoretical configuration risk cannot answer "what did this token actually touch" inside the 30-minute window. Runtime truth answers it before the window even opens.
The obvious grant is rarely the only one. Before you call an incident contained, walk this list:
The recurring failures are predictable: shutting down the whole app instead of scoping to one identity, forgetting refresh tokens, skipping the effective access check and missing inherited maker-mode reach, revoking before preserving evidence, and assuming a single-platform action ends an incident when agents chain across platforms.
Obsidian is not inline. It is not a network proxy in the traffic path. It is the decision engine that tells the enforcement point what to do. This distinction is the whole model, so it is worth stating precisely.
Autonomous runtime enforcement is available today for Claude and Microsoft Copilot only, through a Cloudflare-first "Intel Inside" arrangement. Cloudflare enforces at its edge, where the traffic already flows. Obsidian supplies the identity, effective access, and behavior intelligence that makes the block decision correct. For every other platform, including Bedrock, Vertex, Agentforce, ServiceNow and Now Assist, Snowflake Cortex, Moveworks, and n8n, Obsidian delivers discovery, governance, risk scoring, and human-in-the-loop containment workflows today. Autonomous enforcement on those platforms is on the roadmap, not shipping.
The decision-engine model matters for containment in concrete ways:
An enforcement point looking only at packets sees a valid token on a valid session. It does not know that token belongs to an orphaned agent whose creator was offboarded three months ago, or that the same maker built four siblings on the identical credential. The decision engine knows, because it has been correlating that non-human identity's activity to its effective access the whole time.
A working stack has three layers. The identity intelligence layer knows who and what has access; Obsidian covers the agents and non-human identities, your identity provider covers the humans. The enforcement layer cuts access where traffic flows, through Cloudflare for the supported platforms and through native app APIs for the rest. The orchestration layer, your SOAR or IR platform, coordinates the response. Evaluate any tool on runtime visibility rather than configuration snapshots, on effective access mapping, on agent-to-agent chain visibility, and on whether it can see without you having to be the app admin first.
The fastest way to fail a containment exercise is to break the business. If your answer to one compromised Copilot agent is disabling Copilot for 40,000 employees, the CEO calls the CISO before the attacker is caught. Holding production up means scoping enforcement to four narrow targets:
The test is simple. If your plan cannot answer "what still works for the other 39,999 users during containment," you are running incident response, not containment. Mature IR programs treat the scoped cut as the move that buys time for the investigation, never as the investigation itself.
Containment speed feeds directly into regulatory exposure, because notification clocks start at discovery, not at resolution. GDPR requires notifying the supervisory authority within 72 hours of discovery. The HIPAA breach notification rule requires notifying affected individuals within 60 days, with tighter handling for larger breaches. Check the exact obligation against your current regulatory text and any contractual terms, since customer contracts often demand notice inside 24 to 48 hours. Fast containment shrinks the "when access ended" side of that disclosure, and a documented 30-minute action demonstrates the appropriate technical measures these frameworks expect. Runtime evidence reads better in a regulatory review than a configuration screenshot ever will.
Choose autonomous containment when the action is reversible, the blast radius is scoped to a single identity, and the confidence signal is high. Choose human-in-the-loop when the action would touch org-wide agents, org-wide data, or executive accounts. Remember the labeling constraint: autonomous cutting is live only for Claude and Copilot today, so on every other platform "human-in-the-loop" is not a preference, it is the current capability.
| Scenario | Recommended path |
|---|---|
| Single OAuth token replay from an unusual IP | Autonomous revoke |
| Orphaned agent with sensitive access | Autonomous disable |
| Maker-mode agent used by an unauthorized runner | Autonomous session kill plus alert |
| Org-wide accessible Copilot agent flagged | Human approval, prepared playbook |
| Confused-deputy attack on an executive account | Human approval, compressed SLA |
The trap runs both ways. Automate everything and you eventually break production; automate nothing and you lose to the attacker. The workable model is confidence-weighted autonomy with clear escalation gates.
Small teams get the most from autonomous containment because they have no 24/7 SOC. A stolen token at 2 AM on a Saturday needs to be revoked automatically, not when the Monday shift logs in. Enterprises carry a larger blast radius and therefore more approval gates, but the trade is not automation versus manual. The decision engine still runs the analysis; the enforcement action may just route through a compressed human approval, 60 seconds rather than 60 minutes.
The cost case does not rest on a platform price tag. IBM's annual Cost of a Data Breach research has for years found that extensive use of security automation is the single largest factor lowering the cost of a breach, and containment speed is the mechanism behind that. The number to watch internally is not the license line; it is the hours between discovery and a clean, scoped cut.
Yes, for scoped incidents involving single-identity token abuse or agent misuse. Complex multi-platform breaches take longer to fully resolve, but the initial containment of revoke, isolate, and block should land inside 30 minutes regardless.
No. Obsidian is the decision engine and identity graph. Enforcement runs at the edge through Cloudflare for supported platforms, or through native app APIs, never through a network hop that Obsidian owns and sits in.
Claude and Microsoft Copilot only, through the Cloudflare "Intel Inside" model. Other platforms such as Bedrock, Vertex, Agentforce, Snowflake Cortex, ServiceNow, Moveworks, and n8n get discovery, governance, and human-in-the-loop containment today, with autonomous enforcement on the roadmap.
Through the identity provider's admin API or the app's OAuth grant management endpoint. A good autonomous action chains the grant revocation with refresh-token revocation and active-session termination so the credential cannot quietly renew.
Containment stops the attacker's current access. Eradication removes the underlying weakness, such as a misconfigured agent, a hardcoded credential, or an orphaned account, so the same path cannot be re-exploited.
Almost never. Scoped containment cuts the compromised identity or session while everyone else keeps working. Full-app shutdown is a last resort for incidents you could not scope.