Saphan StudioDocs
Security/Session recording

Watching and reading

Following a run while it works, reading it afterwards, and the difference between a recorded run and an attached session.

Watching a run live

The console's Sessions screen lists runs, with filters and a search across their redacted journals. Opening a run follows its live journal as new chunks arrive. The screen reads only the redacted journal; it never falls back to the raw transcript.

Console conversations — the sessions you hold with an agent from the console — are shown in the console's conversation view.

Reading a run afterwards

The same Sessions screen shows a finished run's journal. To continue a finished run's vendor session:

saphan run … --resume <vendor session key>

The vendor session key is on the run record. For a run on a remote machine, the run record also says whether the vendor's session files were kept for resuming, and where; a run that kept none says so.

⚠ There is no command in this release to print a run's journal or model transcript; read them in the console, or as files in the run's directory.

Runs on remote machines

A remote run's live journal is written on the dispatching machine, as the output arrives. Its model transcript is written on the remote machine, beside the agent, and is brought home when the run is returned:

saphan return <stream>

Each file is checked against its digest as it is copied. When the installation has an evidence store configured (evidence.base_url, evidence.db_name) and its owner key, each segment's signature is verified and each signed segment is stored there with a signed custody record. Unsigned segments, and every segment of an installation without an evidence store, stay in the run's directory and are reported as owed. A copy that fails is reported as owed too; neither blocks the return.

Attached sessions

An agent session you started yourself in a terminal — outside Saphan Studio — can be attached:

saphan session attach --backend claude-code --session-id <id> --workdir <path> --stream <stream> --role <role>
saphan session list
saphan session turns --session-id <id>

--config-dir names the vendor's configuration directory when it is not the default.

Attaching declares the session; it does not record it. The engine copies nothing: it reads the vendor's own session file when you ask for the turns. Attaching is supported for claude-code and codex sessions. It is not a live view.

On this page