Offline recorded replay
Problem
Section titled “Problem”An operator needs to reconstruct the outcome of a completed provider-backed run without credentials, network access, or repeated effects.
Why agentctl fits
Section titled “Why agentctl fits”Recorded replay reads terminal stored task output and effect records. It creates a linked replay record but never calls provider, tool, network, process, filesystem, MCP, or A2A executors.
Example workflow
Section titled “Example workflow”Source: examples/v1/crash-resume.yaml.
apiVersion: agentctl.dev/v1kind: Workflowmetadata: name: crash-resumespec: policy: workspaceRoot: . writableRoots: [artifacts] approval: never actions: write: kind: builtin.write read: kind: builtin.read tasks: - id: write uses: action:write with: { path: artifacts/resume.txt, content: written-once } - id: read uses: action:read needs: [write] with: { path: artifacts/resume.txt }Run and replay
Section titled “Run and replay”mkdir -p examples/v1/artifactsagentctl run examples/v1/crash-resume.yaml --db /tmp/replay.db \ --output json --color neveragentctl replay RUN_ID --db /tmp/replay.db --output json --color neverUse the terminal source run ID returned by the first command. The replay has its own run ID and links to the source.
State and security
Section titled “State and security”Replay needs only the database, but the stored record may contain confidential input and output. It reproduces recorded truth, not current files or remote state.
Current limitation
Section titled “Current limitation”Replay is not a new validation, retry, or exactly-once guarantee. It rejects non-terminal source runs. Use resume for safe continuation and fork only when fresh effects are intentional.
Canonical source:
docs/use-cases/RECORDED_REPLAY.md. Verified against agentctl commit2aeaa88fba71162206b5f08f5bda4f0150247e4f.