Session Trajectory (the full log of what an agent did)
Session Trajectory is a read-only full log of everything a session did: every tool call in order, with its full input, full result and how long it took, plus a metrics strip of turns, tool calls, tokens, cost and API time. It opens from a session's menu, or from a sidebar browser that covers recent sessions. It is off by default.
What it is
What it is: a read-only full log of every action a session took — every tool call in order with its full input, full result, and per-call timing. It answers "exactly what did this session do, step by step" — like a coding harness's trajectory/timeline tab.
Where it lives — two places:
- In a session: open the "⋯" menu and pick Trajectory. The conversation area is replaced by the log; switch back to All to return to the chat.
- In the sidebar: the Session Trajectory tile (under Developer Tools) opens a cross-session browser — pick any recent session on the left, read its full trajectory on the right.
Both appear only when the feature is turned on (see Availability), on desktop and on your phone.
Where to find it
Availability
In-development and off by default. Turn it on in Settings → Lab → Sessions & agents → "Session
Trajectory view". It is read-only (it never changes a session) and works on desktop and mobile.
Setting key: sessionTrajectoryEnabled. Contract: session-trajectory-contract.
How it behaves
What it shows
- A metrics strip: Turns, Tool calls, Tokens (in + out), Cost, and API time.
- Every tool call, in order: each row shows the tool (Read, Bash, a Skill, an MCP tool…), the time it started, and how long it took. Click a row to expand its full input and full result (an errored call is flagged). Very long inputs/outputs are trimmed for display with a "truncated" note; a very long session is capped at its most recent actions.
Where the detail comes from (and the honest limit)
The full detail is read from the session's Claude CLI transcript — the on-disk record of every tool call and result. That's the only place the complete inputs/outputs live. It works on desktop and on your phone (over Web Access) — the sidebar browser lays out as two columns on desktop and a tap-through list on mobile — and any pasted secret is scrubbed out of the log before it's shown.
Engines without a transcript (Codex, Gemini, and the rest — or a session that hasn't started yet) gracefully degrade: instead of the full log you get the turn-level summary built from the conversation Omniscio already stores, with a clear note that full detail isn't available for that session. It's never blank and never an error.
For agents
For agents working in the code
- Data (main, read-only):
session-trajectory-service.tsresolves the session'scliSessionId→ the.jsonltranscript → the pureparse-trajectory-transcript.ts(pairstool_use↔tool_resultby id, times from line timestamps, excludes sidechain, caps each field), after scrubbing managed secrets. ReturnshasTranscript: false(→ renderer degrades) when there is no transcript. - IPC:
SESSION_TRAJECTORY_GET({ sessionId }→SessionTrajectory), handlersession-trajectory-handlers.ts(auto-discovered). Mobile-ready: BASELINED inweb-access-ws-invoke-baseline.json(not blocked); the payload is secret-scrubbed before the bridge. - UI:
TrajectoryView.tsx(fetches the IPC; full log OR the degrade view from the purederive-trajectory.ts), mounted per-session (SessionOverflowMenurow +SessionPanel) and by the sidebarTrajectoryBrowserPanel(integrationsession-trajectory, Developer Tools group). - Gate visibility ONLY via
isUnreleasedFeatureVisibleInRenderer('session-trajectory', settings).
Related
Trajectory is one view of what a session did; these are the other ways to see the same record.
- Session forensics — reading a finished session’s past in detail.
- Raw thread export — exporting the whole conversation untouched.
Last verified 2026-09-23