[ Product · Agent Shield · beta ]
Agent safety is a runtime contract, not a prompt.
A system prompt or SKILL.md is a suggestion that one poisoned issue can override. Agent Shield enforces the rules outside the model: it sits between your coding agent and every tool it calls, and remembers what the session has touched.
[ Two faces ]
Stop it before it happens. Prove it after.
Every action, checked against the whole session
Agent Shield sits inline between the agent and every tool surface: MCP tool calls and resource reads, shell, filesystem and network. Each proposed action is judged on everything the session has done so far, not in isolation.
No more “tests passed” that never ran
Before a push, a PR merge, a production migration or a task marked done, Agent Shield requires a receipt it captured itself: the test run exited 0 after the last file change. No receipt, no transition.
[ Taint tracking ]
The session remembers what it touched.
Two axes, tracked per session. Taint only goes up, never back down, until the session ends.
Becomes SECRET when the agent reads .env*, ~/.ssh, ~/.aws, private keys or customer PII tables.
Then: outbound sinks like HTTP posts, fetch to unlisted domains, Slack, email, GitHub comments and untrusted MCP servers are blocked or need approval.
Becomes UNTRUSTED when the agent reads a web page, a third-party issue or PR comment, an inbound email or an unverified MCP resource.
Then: shell exec, writes outside the workspace, CI workflows, git hooks, package.json scripts and admin APIs drop to ask or deny.
[ Tool-poisoning scanner ]
Hidden instructions never reach the model.
Tool descriptions, SKILL.md and .cursorrules files are scanned before they enter the context window. It flags:
- 01Hidden imperative overrides
- 02References to other tools
- 03Invisible Unicode tag characters
- 04Capabilities the tool never declared
[ One policy file ]
Same lockfile. Same rules. Now for agents.
Agent and MCP rules live in the agents_and_mcp section of capabilities.lock, right next to your package rules. Every step of every session is hash-chained, so the audit trail can't be quietly edited.
Ht = sha256(Ht-1 ‖ actor ‖ skill ‖ tool ‖ args ‖ taint ‖ decision ‖ result)agents_and_mcp: mcp_servers: "git-mcp-server": transport: "stdio" rwx: fs_read: ["./.git/**", "./src/**"] fs_write: "none" network: "none" shell: false taint_policy: block_on_untrusted_integrity: true evidential_contracts: on_git_commit_or_push: require_fresh_test_pass: true
[ Private beta ]
Put your agents under contract.
Built for coding agents like Claude Code and Cursor, and for any MCP server your team runs.