{"slug": "a-protocol-for-ai-agent-workspace-state-and-effect-management", "title": "A protocol for AI agent workspace state and effect management", "summary": "Reel, a protocol for managing the boundary between an AI agent's speculative work and external systems, defines six content-addressed types, three verbs, and three invariants to make agent actions transactional. The protocol ensures that irreversible effects are never executed if the agent later abandons the reasoning that produced them, by constructing the capability to fire an effect only inside a commit operation. A Rust kernel implementing the protocol is under development, with fork and abort already implemented and commit in progress.", "body_md": "reel is a protocol for the boundary between an AI agent's speculative work and the systems it does not own.\n\nAn agent reasons by attempting things. Some attempts cross that boundary: a message is posted, a row is written, a payment is taken. Once an action has crossed, no later decision — including the decision to abandon the line of reasoning that produced it — can retract it. reel exists to make the boundary transactional, so that an action the system decides to discard is never performed in the first place.\n\nreel defines six content-addressed types — `Hash`\n\n, `Block`\n\n, `Ref`\n\n, `Delta`\n\n,\n`Capability`\n\n, `View`\n\n— three verbs — `fork`\n\n, `commit`\n\n, `abort`\n\n— and three\ninvariants: reachability, the silencing of discarded irreversible effects, and\ncapability narrowing.\n\nThe load-bearing decision is that a `View`\n\n's pending side-effects are themselves\na content-addressed `Block`\n\n. `commit`\n\nmoves that block into the committed log\nand drains it; `abort`\n\ndrops the reference, after which the block is unreachable\nand is collected. No path between the submission of an irreversible effect and\n`commit`\n\ncan fire it, because the capability needed to fire one is constructed\nonly inside `commit`\n\n's drain. `abort`\n\nconstructs none, so on the discard path\nthe effect is, by construction, unable to run.\n\nThe verbs, the snapshot-isolation reading of a `View`\n\n, the capability model and\nthe effect taxonomy are each taken from existing work — Gray (1981), Wang &\nZheng (2026), Berenson et al. (1995), Miller, Yee & Shapiro (2003),\nGarcia-Molina & Salem (1987). reel's contribution is their composition under a\nsingle content-addressed representation.\n\nState, side-effects and capabilities are represented as the same kind of content-addressed block. One transactional kernel therefore provides rollback, audit and sharing for an entire workspace, rather than each being implemented again for each feature. A system that routes work across many external resources can rebuild its state-and-effect layer on this one kernel instead of reasoning about transactionality resource by resource.\n\n**The specification**(`spec/`\n\n): the six types, three verbs and three invariants; the effect classes; the conformance criteria; the adapter interface.**A Rust kernel**(`crates/`\n\n):`reel-spec`\n\n— the protocol types. The namespace is a persistent, copy-on-write map, so a fork shares it in constant time.`reel-store`\n\n— a content-addressed block-and-ref store, with an in-memory backend and a redb-backed persistent one, and a reachability walker for collection.`reel-effects`\n\n— the sealed effect-class traits and the linear fire-capability.`reel-core`\n\n— the kernel.`fork`\n\n(constant-time copy-on-write inheritance with capability narrowing) and`abort`\n\nare implemented;`commit`\n\nfollows.`adapters/`\n\n,`reel-cli`\n\n— the filesystem and remote adapters and the command-line surface, in progress.\n\nThe workspace builds on stable Rust and passes its test suite, which includes property-based tests over the kernel's invariants.\n\n`commit`\n\n— precondition validation and the ordered drain of buffered effects.- The command-line tool — a dry-run loop that runs a process, displays its pending effects, and either commits or discards them.\n- The effect-interception layer — capturing a process's outbound effects through a replaceable backend, so that classifying a new service is the only work a new integration requires.\n\n```\ncargo build --workspace\ncargo test  --workspace\n```\n\nRust 1.95 (stable), edition 2024.\n\nPre-release. The specification is settled; the kernel is under construction along the path described above. Interfaces may change.\n\nApache-2.0. See [LICENSE](/eouzoe/reel/blob/master/LICENSE).", "url": "https://wpnews.pro/news/a-protocol-for-ai-agent-workspace-state-and-effect-management", "canonical_source": "https://github.com/eouzoe/reel", "published_at": "2026-07-26 08:02:03+00:00", "updated_at": "2026-07-26 08:22:54.336397+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "ai-safety"], "entities": ["reel", "Gray (1981)", "Wang & Zheng (2026)", "Berenson et al. (1995)", "Miller, Yee & Shapiro (2003)", "Garcia-Molina & Salem (1987)"], "alternates": {"html": "https://wpnews.pro/news/a-protocol-for-ai-agent-workspace-state-and-effect-management", "markdown": "https://wpnews.pro/news/a-protocol-for-ai-agent-workspace-state-and-effect-management.md", "text": "https://wpnews.pro/news/a-protocol-for-ai-agent-workspace-state-and-effect-management.txt", "jsonld": "https://wpnews.pro/news/a-protocol-for-ai-agent-workspace-state-and-effect-management.jsonld"}}