Cryptographic Forensics for AI Coding Agent Sessions DEPOSE, a cryptographic forensic framework designed to create verifiable audit trails for AI coding agent sessions (like Claude Code or Codex CLI). It addresses the problem that standard session logs (JSONL files) are not trustworthy evidence because they can be altered by anyone with shell access. DEPOSE bundles session events into a directory with a hash chain, Ed25519 signatures, and RFC 3161 timestamps, allowing a separate, static Go verifier to confirm that no events were tampered with, even if the original machine is untrusted. A Claude Code or Codex CLI session writes a JSONL file to disk. If the agent runs rm -rf on a training-data directory or terraform destroy -auto-approve on production, that file is where an incident review starts. A JSONL file is not evidence. Anyone with shell access can rewrite it. To a third party who doesn't trust the machine it came from, it proves nothing. That gap matters once agents have credentials to real infrastructure. Most agent observability tooling is built for debugging and quality, not for the moment after damage is done. This post is about the three cryptographic properties that turn a transcript into something an auditor or regulator can verify, and how the DEPOSE project wires them together. Three properties Assume the machine that produced the bundle can't be trusted. Three things need to hold at once: - Tamper-evident. Any byte change has to be detectable. Hash chain over events: change a byte, replay fails. - Authenticated. The record has to be bound to a key the producer controls and publishes a fingerprint for. Ed25519 signatures over a manifest. - Anti-backdated. A party other than the producer has to anchor the record in time. RFC 3161 tokens from a public TSA. The primitives are old and well understood. The hard part is wiring them through a normalized event schema and shipping a verifier that doesn't depend on the producer's runtime. No LLM in the signed path Every event is captured at execution time or normalized from the session JSONL, then committed to the hash chain. The human-readable narrative is generated separately, from deterministic Handlebars templates over the signed events. It's excluded from the root hash. If generated prose became part of the signed record, verification would depend on model behavior staying stable and reproducible. DEPOSE avoids that dependency. The signed record is event data and hashes. The prose is templated commentary with evt-