Repository navigation
Demos Cloud Storage
After a public incident report: a coding agent, told "no new upload", uploaded files to a production bucket anyway;
told to roll back, it deleted them and then purged every version of them, destroying the version history kept as a
safety net. Here a scripted coding agent makes the same three calls under the dev pack, the signer's default for
coding agents on a laptop. The upload waits for a person (TK-A032, uploads to cloud storage), and so do the delete
and the version purge (TK-A031, destroying cloud storage data). The person rejects each with a reason; the agent's
listing and its git diff run.
python examples/v2/demos/cloud_storage.py # POSIX
tracekit verify run.tkb --trust trust.jsonWhat the record shows. For each held call, its policy.decision (ask and the rule ids) before anything ran,
the person's approval (reject, with the reason they gave), then the signer's approval.refused
(TK-APPROVAL-REJECTED) when the agent tries to run it anyway; no tool.result for any of the three. A call the
person approves would show the approval, then its result.
Why it matters. The request said "no new upload", but the person's words aren't what stops the upload here: the rules hold the action itself, however the model describes it. A version purge can't be undone, so it waits for a person on every pack; uploads wait on the dev pack, where a coding agent rarely writes to a bucket.
transcript.txt · the example · packs · limits
Generated from docs/ at v1.4.2. Edit the docs in the repository, not here.
Get started
- Quickstart: the v2 signer
- Quickstarts
- Quickstart: Claude Agent SDK
- Quickstart: a custom agent
- Quickstart: LangChain and LangGraph
- Quickstart: MCP client
- Quickstart: OpenAI Agents SDK
- Coding agents other than Claude Code
- tracekit doctor
- Walkthrough: Tracekit end to end
How it works
- How Tracekit works
- Overview
- The life of a tool call
- The evidence format
- Verification and assurance
- Witnesses and monitoring
- Policy
- Approvals
- Detection and containment
- Capture and completeness
- Custody
- Provenance and tracekit why
- Deployment and isolation
- Storage, durability and performance
- Integrations
- Security model
- Architecture
- tracekit why: architecture
Integrations
- Integrations
- Adapters
- OpenTelemetry
- Remote clients
- Kubernetes agent-sandbox
- agentgateway
- agentsh and Tracekit
- Browser Use
- Claude Agent SDK
- Claude Code's sandbox
- Codex's sandbox
- CrewAI
- Docker MCP Gateway
- E2B
- Falco
- Gemini CLI's sandbox
- Google ADK
- Haystack
- Hermes Agent
- LangChain v1
- LiteLLM
- LlamaIndex
- MCP client
- microsandbox
- Microsoft Agent Framework
- OpenAI Agents SDK
- NVIDIA OpenShell
- Pydantic AI
- sandbox-runtime's proxy on its own
- Strands Agents
- Tetragon
- Vercel AI SDK
- Wassette
Policy and approvals
- Policy reference
- Approvals
- Findings
- Reading the model's reasoning
- Incidents and containment
- Webhooks
Deploy and operate
- Deploying the signer
- The signer as a container
- The signer on Kubernetes
- The compose stack
- Identity
- Tool executor
- MCP gateway
- LLM gateway
- Egress observation
- Witnesses
- Log monitor
- Record-key issuer
- Signer observability
- Viewer
- tracekit why: causal investigation and replay
- Migrating
- Platforms
Verify the evidence
- Tracekit for auditors
- Reading a v2 verify report
- Evidence format v2
- Auditor guide
- Sample evidence bundle
- Signing
- What Tracekit guarantees
Security and privacy
- Threat model: the v2 signer
- Threat model: the v1 laptop signer
- HTTP security checklist
- Threat-model review packet
- Privacy
- Known limits and trade-offs
- What's stable
Compliance
- Compliance mapping
- EU AI Act
- ISO/IEC 42001
- NIST AI RMF and the Generative AI Profile
- OWASP Top 10 lists for LLM and agentic applications
Evaluation
Demos
- Demos
- Agent approvers within bounds
- A production bucket
- Completeness and tamper evidence
- Detection and containment
- Network coverage: an egress observer
- Guardrails: allow, deny, or ask a person
- MCP tools, gated and recorded
- A production volume
- Prompt injection held by provenance
- Why: which input caused the action
Help