Security/Session recording
Limits
What is not recorded, and what is recorded but cannot be read back yet.
| limit | what it means for you |
|---|---|
| No retention policy | Nothing deletes run directories, journals, model transcripts or custody records automatically. Size your storage, and remove old runs by your own policy. |
A proc run is recorded only for the model provider it declares | A program run with --backend proc that makes its own model calls (an orchestrator such as LangGraph or CrewAI) is recorded when it declares its provider with --model-provider openai-chat or --model-provider anthropic. One provider per run; a run that declares two is refused before it starts, and so is one placed on a machine reached over ssh. The program is pointed at the recorder through its provider's environment variables; one that ignores them is not recorded. A proc run that declares no provider has no model transcript. |
| No model transcript where the recorder cannot run | Agents with no recorder channel (agent-loop, openai-compat); droid without a bring-your-own-key model and a declared codec and upstream; qwen-code without a configured upstream, or signed in with its own OAuth; walled runs the recorder cannot be carried into (qwen-code on any walled run; codex and droid on macOS; container and vendor confinement); runs with --no-recording or guardrail.record = false. These runs still have a run record, a journal and a raw transcript, and the run record names the reason. |
Console sessions are recorded for claude-code only | Console conversations and shells with other agents are not recorded through the guardrail. |
| No viewer for the signed transcript | Returned, signed segments are stored with their custody records, but no console page or command reads them back in this release. |
| No standalone verification command | saphan return verifies segment signatures when it takes them into custody; there is no command to check a chain or a signature on demand. |
| Local model transcripts are not taken into custody | Only remote runs' segments are copied home, checked and stored. |
| No running cost while a run works | The run's cost is known when it ends. |
| The recorder is given, not enforced | Outside sealed Linux walls, an agent that ignores the recorder's address is not recorded. |
| One console route shows the raw transcript | A finished run with no journal is replayed unredacted on its output stream. |
| Attached sessions are not copies | If the vendor's own session file is deleted or changed, so is what the attached session shows. |
| Runs started outside Saphan Studio are not recorded | Only runs the engine starts are recorded. |