# Caught in the Wild: Real Interceptions from Our Own Agent Sessions

A running log of real events where ACP held the line against the AI agents that build ACP — approvals, denials, spend caps, and metering catches. Every entry names the tool, the rule, and the outcome.

<style>
.citw-wrap { max-width: 1120px; margin: 0 auto; padding: 56px 24px 72px; }
.citw-kicker { font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--accent, #06b6d4); font-weight: 600; margin-bottom: 10px; }
.citw-wrap h1 { font-size: clamp(30px, 4.5vw, 44px); line-height: 1.12; margin: 0 0 16px; }
.citw-lede { max-width: 760px; font-size: 17px; line-height: 1.65; color: var(--fg-2, #a7a7b4); margin-bottom: 40px; }
.citw-lede strong { color: var(--fg-1, #ececf1); }
.citw-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
@media (max-width: 980px) { .citw-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 620px) { .citw-grid { grid-template-columns: 1fr; } }
.citw-card { border: 1px solid var(--line-2, #26262e); border-radius: 12px; padding: 22px 22px 24px; background: var(--surface-2, #101016); display: flex; flex-direction: column; gap: 10px; }
.citw-meta { display: flex; align-items: center; gap: 10px; }
.citw-date { font-size: 12px; color: var(--fg-3, #71717a); font-variant-numeric: tabular-nums; }
.citw-chip { font-size: 10.5px; font-weight: 700; letter-spacing: 0.08em; padding: 3px 9px; border-radius: 999px; border: 1px solid; }
.citw-chip.deny   { color: #f2777c; border-color: rgba(229,72,77,0.45); background: rgba(229,72,77,0.10); }
.citw-chip.held   { color: #f0b429; border-color: rgba(240,180,41,0.40); background: rgba(240,180,41,0.09); }
.citw-chip.cap    { color: #9a9af5; border-color: rgba(99,102,241,0.45); background: rgba(99,102,241,0.12); }
.citw-chip.caught { color: #4cc9e0; border-color: rgba(6,182,212,0.40); background: rgba(6,182,212,0.10); }
.citw-card h3 { font-size: 17.5px; line-height: 1.3; margin: 0; }
.citw-card p { font-size: 14px; line-height: 1.62; color: var(--fg-2, #a7a7b4); margin: 0; }
.citw-card p a { color: var(--accent, #06b6d4); }
.citw-card code { font-size: 12.5px; }
.citw-why { max-width: 760px; margin-top: 56px; }
.citw-why h2 { font-size: 24px; margin-bottom: 12px; }
.citw-why p { font-size: 16px; line-height: 1.7; color: var(--fg-2, #a7a7b4); }
</style>

<div class="citw-wrap">
<div class="citw-kicker">/ caught in the wild</div>
<h1>Real interceptions. Our own agents.</h1>
<p class="citw-lede">Every agent that builds this product runs under its control. That produces something no demo can: a running log of <strong>real interceptions</strong> — the agent that builds ACP getting held, denied, capped, and caught by the very controls it ships. Nothing below is staged or simulated; entries are added as they happen, most recent first.</p>

<div style="max-width:1120px;margin:0 auto 36px">
<img src="/assets/img/screenshots/activity-denied-24h-dark.png" alt="The ACP Activity view filtered to Denied for the last 24 hours: 150 denied calls from our own agent sessions, each row naming the tool, the reason the rule fired, the tier it ran at, and the identity behind it — a Bash.sed that tried to edit the plugin's own config, curls the hook cannot inspect, and a Bash.rm held for approval." width="1440" height="900" loading="lazy" decoding="async" style="width:100%;height:auto;border:1px solid var(--line-2);border-radius:10px;box-shadow:0 20px 50px -24px rgba(0,0,0,0.9);margin:8px 0 6px">
<p style="font-size:13px;color:var(--fg-3);margin:0 0 22px">Activity, filtered to Denied, in the workspace our own agents run in. Screenshots on this page are taken from that console, not staged.</p>
<img src="/assets/img/screenshots/runs-findings-dark.png" alt="The ACP Activity Runs view for our own workspace, last 7 days: one row per agent execution with cost, duration, steps, top tool, and findings chips — clean, 1 err, 1 PII — and a Replay button on each." width="1440" height="900" loading="lazy" decoding="async" style="width:100%;height:auto;border:1px solid var(--line-2);border-radius:10px;box-shadow:0 20px 50px -24px rgba(0,0,0,0.9);margin:8px 0 6px">
<p style="font-size:13px;color:var(--fg-3);margin:0 0 22px">Runs: one row per agent execution, with the findings the record produced.</p>
</div>

<div class="citw-grid">

<div class="citw-card">
<div class="citw-meta"><span class="citw-chip deny">DENIED</span><span class="citw-date">2026-08-13</span></div>
<h3>The deploy agent got policy-checked by the thing it deployed</h3>
<p>The agent that deployed calafia.ai&rsquo;s release tried to <code>curl</code> the site to verify the deploy &mdash; and the control plane it had just deployed through denied the call: api-tier policy, <code>Bash.curl.calafia.ai</code>. It verified through a policy-permitted fetch instead. No exception for being the author.</p>
</div>

<div class="citw-card">
<div class="citw-meta"><span class="citw-chip deny">DENIED ×2</span><span class="citw-date">2026-07-22</span></div>
<h3>The floor that caught its own author — twice in its first hour</h3>
<p>An agent edited the launch wrapper that controls it — to <em>restore</em> the controls after a setup bug, which is exactly the point: the capability to rewrite control config is identical in both directions, and "it was a safety fix" is what a compromised agent would say too. Our classifier could detect this class; enforcement had never been wired. Same day it became an unconditional floor — above policy, unapprovable, direction-blind. Within an hour of going live, the floor denied its own author twice: first for blog copy <em>mentioning</em> the protected paths, then for the regression tests inside the precision fix. Both prose, both denied, both now encoded as tests. The most useful entries on this page are the miss — and the overcorrection.</p>
</div>

<div class="citw-card">
<div class="citw-meta"><span class="citw-chip caught">BROKERED</span><span class="citw-date">2026-07-21</span></div>
<h3>The credential broker's first catch was its own author</h3>
<p>The moment credential brokering went live on our dev machine, the very next <code>gh</code> command was denied — GitHub had never been OAuth-connected through ACP there. The agent declined to script around its own broker, handed the connect link to a human, and after one click the same command ran on the OAuth token ACP holds server-side. The local credential never left disk. (The deny also exposed a brand bug in the connect link itself — fixed the same hour.)</p>
</div>

<div class="citw-card">
<div class="citw-meta"><span class="citw-chip deny">DENIED</span><span class="citw-date">2026-07-21</span></div>
<h3>Mid-incident, the fix had to take the reviewed path</h3>
<p>During a production incident, the agent tried to shift Cloud Run traffic directly to a hotfix revision. Policy denied the raw traffic surgery — so the fix went through the standard build-review-promote pipeline instead. Slower by ten minutes; auditable forever. The deny didn't block the fix. It blocked the shortcut.</p>
</div>

<div class="citw-card">
<div class="citw-meta"><span class="citw-chip cap">CAP HELD</span><span class="citw-date">2026-07-21</span></div>
<h3>The agent declined to raise its own spending cap</h3>
<p>An ops agent's daily LLM budget fired mid-investigation — consumed by the very cost bug under investigation. The agent doing the investigating had admin access to raise the cap. It didn't: an agent lifting its own safety net is exactly what the control plane exists to prevent. Verification waited for the daily reset.</p>
</div>

<div class="citw-card">
<div class="citw-meta"><span class="citw-chip caught">CAUGHT BY METERING</span><span class="citw-date">2026-07-21</span></div>
<h3>The surprise bill came from the one agent outside the plane</h3>
<p>A ~$15/day model bill traced to a container running on a fresh API key — spend invisible because it never crossed the proxy. The same afternoon, the agent investigating it — inside the plane — couldn't delete its own scratch files without an approval card. The bill you get surprised by is always from the agent you didn't control.</p>
</div>

<div class="citw-card">
<div class="citw-meta"><span class="citw-chip held">HELD FOR APPROVAL</span><span class="citw-date">2026-07-20</span></div>
<h3>The approval card received while building approval cards</h3>
<p>While configuring controls for a new agent, the builder agent tried to clean up a one-off script with <code>rm</code>. The hook held the delete for human approval — during the very session that was setting up approvals for another agent. The agent building the cage got caged.</p>
</div>

<div class="citw-card">
<div class="citw-meta"><span class="citw-chip held">PROCESS GAP</span><span class="citw-date">2026-07-20</span></div>
<h3>Approved, complied — and the grant expired between them</h3>
<p>A human approved a held action; the agent retried outside the grant window; the system minted a second approval card for the identical action. Everyone did the right thing and the baton still dropped. Filed and fixed as a grant-delivery issue — approvals are a conversation, and conversations need delivery receipts.</p>
</div>

<div class="citw-card">
<div class="citw-meta"><span class="citw-chip caught">CAUGHT BY VERIFICATION</span><span class="citw-date">2026-07-19</span></div>
<h3>The metric that manufactured work</h3>
<p>A cost tool double-counted cache reads and reported a real ~96% cache-hit rate as ~50%. A founder and a frontier model nearly built a feature to fix a problem that didn't exist. Verifying the claim against raw run data killed it in an afternoon. <a href="/blog/the-metric-that-manufactured-work">Full write-up</a>.</p>
</div>

<div class="citw-card">
<div class="citw-meta"><span class="citw-chip cap">GUARD HELD</span><span class="citw-date">2026-07-19</span></div>
<h3>The anti-abuse guard doesn't know who the founder is</h3>
<p>Creating an internal workspace through the canonical path hit the workspace cap — the guard stopped the product's own founder, who had to take the deliberate, authorized admin route instead. Guards that recognize VIPs aren't guards.</p>
</div>

<div class="citw-card">
<div class="citw-meta"><span class="citw-chip cap">RATE FLOOR HELD</span><span class="citw-date">2026-07-18</span></div>
<h3>Four agents hit the rate floor at once</h3>
<p>A research fleet — three subagents plus the main loop — tripped the per-key rate bucket, and the agents read the denial as a permissions failure and aborted. The floor held as designed; what shipped the same day was a calmer denial: sub-2-second waits absorbed server-side, and retry copy an agent can act on.</p>
</div>

</div>

<p style="max-width:760px;margin:48px auto 0;padding:20px 24px;border:1px solid var(--line-2,#26262e);border-radius:12px;background:var(--surface-2,#101016);font-size:15px;line-height:1.65;color:var(--fg-2,#a7a7b4);">
<strong style="color:var(--fg-1,#ececf1);">Want the other kind of proof?</strong> Everything above is unstaged — our own agents, caught live. For the industry&rsquo;s worst <em>real</em> incidents — the ones that made the news — rebuilt in a sandbox and stopped by the same controls, see <a href="/series/incident-recreated" style="color:var(--accent,#06b6d4);font-weight:600;">the Recreated series &rarr;</a>
</p>

<div class="citw-why">
<h2>Why we publish this</h2>
<p>Two reasons. First, honesty is cheaper than polish: these entries include our own bugs and process gaps, because a control plane you only hear good things about is a control plane nobody's using hard. Second, this is the product working as designed — deterministic allow/ask/deny on real actions, budgets that hold under pressure, metering that catches what dashboards miss. If you want the same controls on your own agents, <a href="/getting-started">start here</a>. If you want the enforcement concept first, read <a href="/agent-firewall">what an agent firewall is</a>.</p>
</div>
</div>
