Zero-friction governance for the agent your engineers already use.
Point Claude Code, Codex, or Cursor at Track's MCP proxy. The IDE feels untouched. Every tool call lands in your policy engine before it ever reaches a tool.
Also supported: aider, continue.dev, OpenAI Agents SDK, and any harness that speaks MCP. Track's transparent proxy passes the JSON-RPC 2.0 envelope through unchanged once a call is approved — the agent doesn't know it's been governed.
Bind the agent to its scope, not just its credentials.
When a developer kicks off a Claude Code session, Track records the manifest the harness declares — role, repo, tool allowlist, budget. Every action that follows is checked against this declaration. Drift becomes a structural violation, not a log line you'll review next quarter.
session_id: sess-2026-05-05-7c4a91 agent: claude-code developer: priya@acme.com # resolved via SSO at session start declared_at: 2026-05-05T14:21:08Z manifest: role: code-reviewer workspace: acme/payments # bound to one repo branch_constraints: push_to: ["feature/*", "fix/*"] # never main, never release/* forbid: ["force_push", "reset_hard"] allowed_tools: - filesystem.read # scoped to acme/payments - filesystem.write # same scope - shell.exec(allowlist) # pytest, npm test, make, go test - git.read · git.commit · git.push forbidden_tools: - shell.exec(curl|wget|sh|ssh) - filesystem.read(~) # no reads outside the workspace - net.http(*) # no outbound HTTP budget: tool_calls: 200 bytes_out: 5 MiB duration: 45m attestation: publisher: anthropic.com:claude-code:v2.4.1 signed_by: ed25519:7c91..a4f3 ✓ pinned publisher key
permission_scope_exceeded, unknown_role, budget_overrun.
shell.exec ever." A manifest says "no shell.exec this session, because this agent claimed code-reviewer." That distinction is what turns runtime governance into a contract the agent signed up to.
Silent governance. The IDE feels untouched.
Seven tool calls in 14 seconds — read a file, grep the codebase, run tests, apply a patch, commit, push to a feature branch. All allowed, all governed, all in the audit chain. The developer's UX is identical.
Five coding-specific threats. All blocked. Zero side effects.
A secret in .env, a force-push to main, a credential read outside the repo, a curl-piped-to-shell, and an MCP supply-chain rug-pull. The failure modes your engineers have actually hit. Click any row to inspect the trace.
git.add; the commit would have leaked it. Inspector fires before the staging actually mutates the index.feature/*, fix/*] · forbid=[force_push] — main & force_push both blocked~/code/payments/** — ~/.aws/credentials not in scopecurl\s.*\|\s*(bash|sh)shell.exec(curl|wget|sh|ssh)ed25519:mcp-github-publisher · 4f9c..21ab — signature on the new manifest does not verifydelete_repo to any agent.delete_repo never reaches the agent's tool listDeclared one job. Attempted another.
Sometimes the bad action looks legitimate in isolation. rm -rf node_modules && npm install is something engineers run all day. The difference: this agent declared code-reviewer at session start. Tool-by-tool rules can't see that. Drift can.
pytest|npm test|make|go test)rm -rf node_modules && npm install --forcepermission_scope_exceededscope_violationrm, ever."
What happened, in causal order.
When a 200-tool-call session goes wrong, you don't want to grep logs. The diagnose API surfaces the intent chain — manifest → drift → policy hit — for any session, indexed by trace ID. This is what your devops lead opens when Slack lights up.
{
"session_id": "sess-2026-05-05-7c4a91",
"agent": "claude-code",
"developer": "priya@acme.com",
"manifest": {
"role": "code-reviewer",
"workspace": "acme/payments",
"publisher": "anthropic.com:claude-code:v2.4.1",
"signed_by": "ed25519:7c91..a4f3"
},
"duration": "12m 41s",
"tool_calls": { "attempted": 28, "allowed": 26, "denied": 2 },
"workspace_state": { "writes": 4, "deletes": 0, "commits": 1, "pushes": 1 },
"events": [
{ "t": "+00:00.0", "kind": "session_start", "manifest": "code-reviewer / acme/payments" },
{ "t": "+02:14.7", "kind": "tool_call", "tool": "filesystem.write", "decision": "allow" },
{ "t": "+04:22.1", "kind": "tool_call", "tool": "git.commit", "decision": "allow" },
{ "t": "+08:51.3", "kind": "drift_event", "pattern": "scope_violation",
"detail": "shell.exec attempted; not in manifest.allowed_tools" },
{ "t": "+08:51.3", "kind": "decision", "decision": "deny",
"rule": "HARNESS-DRIFT-001" },
{ "t": "+08:51.4", "kind": "siem_export", "target": "splunk:agent-governance" },
{ "t": "+12:41.0", "kind": "session_close", "reason": "policy_terminated" }
],
"causal_chain": [
"Agent claimed role=code-reviewer; manifest pinned shell.exec out of allowed_tools.",
"26 in-scope tool calls executed cleanly across 12 minutes.",
"At t=+08:51, agent attempted shell.exec(rm -rf node_modules) under prompt 'the build's flaky'.",
"Drift inspector raised permission_scope_exceeded; failure_pattern=scope_violation.",
"Policy rule HARNESS-DRIFT-001 returned deny; subprocess never spawned.",
"Workspace ended clean: 1 commit, 1 push to feature/fix-tenant-dispatch, no destructive ops."
],
"audit_anchor": {
"chain_tip": "sha256:7b3f4c91..a2e8d204",
"tlog": "rekor:abc123..def456",
"rfc3161_tsa": "DigiCert @ 2026-05-05T14:33:51.812Z",
"verifiable": true
}
}What this looks like to your CISO
- The agent
claude-code v2.4.1was bound to a signed manifest at session start. - 26 tool calls ran inside that scope; 4 file writes, 1 commit, 1 push to a feature branch.
- One drift event fired at
t=+08:51— agent attemptedshell.exec, which was not in the declared scope. - The deny was structural, not heuristic: the manifest forbade it, the rule fired, the subprocess never spawned.
- The full causal chain is in the SIEM, anchored to a tamper-evident chain-tip and a public RFC 3161 timestamp.