[FEATURE] Read a routine run's transcript/output from the terminal (CLI or API), without opening the session URL in a browser
Problem
When a routine runs — whether fired on schedule, via a GitHub event, via the API /fire endpoint, or via the RemoteTrigger MCP run action — the only documented way to read what the run actually did is to open its session URL in a browser. The routines docs say it plainly: "Open the session URL in a browser to watch the run," and for run history, "Click any run to open it as a full session."
There is no terminal-native path to a run's transcript, tool calls, final output, or detailed status:
/firereturns onlyclaude_code_session_id+claude_code_session_url— an identifier and a browser link, no content.- The
/scheduleCLI (list/update/run) manages routines but cannot read a run's output. - Fetching
https://claude.ai/code/<session_id>over HTTP returns 403 (it needs the logged-in browser session).
Why it matters
This breaks headless and agent-driven orchestration. An agent (or a script) can fire a routine and get back a session id, but cannot observe the result without a human-oriented browser step. Today the only workaround to read a run programmatically is to drive a logged-in browser — e.g. the Claude-in-Chrome extension — to scrape the rendered transcript. For anyone building an autonomous loop on top of routines (fire → wait → read result → decide next action), the "read result" step has no first-class interface.
Requested
A terminal-accessible way to fetch a routine run's details by session id, returning the transcript / tool calls / final assistant message / status as text or JSON. Either surface works:
- a CLI command, e.g.
/schedule runs <routine>to list runs andclaude routines runs get <session_id>to fetch one; and/or - an API endpoint alongside
/fire, e.g.GET …/routines/runs/<session_id>, under the same experimental beta header.
Even just the final assistant message plus a real completion status (beyond the green "started and exited" indicator the docs already caveat) would close most of the gap.
Related (not duplicates)
- #64397 — routine observability gaps, but its asks (
RemoteTrigger.run400, unmergedclaude/*branches, MCP permission deadlock) are different specifics; none covers reading a run's transcript from the terminal. - #76841 — same conceptual pain on the mobile app (no run-history view); this request is about the terminal/CLI.