Skip to content

Vendor ask: is there a supported programmatic read of a Claude Code session transcript? #348

Description

@bdelanghe

The linkable home for the question #338 door (a) and #342 both reduce to. Ready to send; not yet sent. The answer — grant or refusal — gets recorded here, so it is citable instead of living in a transcript.

The ask, in two questions

1. Is there any supported programmatic path to a Claude Code session's transcript, for the account that owns the session?

create_session's own tool description says, verbatim:

Combine with send_message for fan-out orchestration: spawn a sibling, send it a task, poll list_events for the result.

Neither list_events nor send_message is exposed on the MCP surface we can see. ToolSearch select:…__list_events and …__send_message both return No matching deferred tools found. get_session returns a record — title, status, timestamps, usage, post_turn_summary — and no turns, though its own reply envelope is labelled "record, transcript events, or run log".

So: doc defect, or unshipped capability? Either answer is useful. If the loop that description names is meant to close, list_events is the missing half.

2. claude.ai/code/artifact/<uuid> is exempt from a bot challenge that covers the rest of the host. What makes a path exempt, and could a read route be?

This is the concrete lever, and it took a control to find.

The evidence, measured with controls

Earlier probing recorded four separate 403s and concluded the session route was forbidden. That was wrong and is corrected on #338. Re-run with controls:

CONTROL  pathbase.bounded.tools/          405 (+ x-door-version)   our egress works
CONTROL  example.com/                     000                      proxy allowlist blocks it
CONTROL  claude.ai/  (ROOT)               403  "Just a moment…"    <-- Cloudflare challenge
TARGET   claude.ai/code/session_<id>      403  "Just a moment…"    same page
TARGET   claude.ai/api/claude_code/…      403  "Just a moment…"    same page
POSITIVE claude.ai/code/artifact/<uuid>   200                      exempt, even for an all-zeros UUID

Just a moment… is Cloudflare's managed-challenge interstitial, served for the bare root. So every 403 measured one fact — a non-browser client does not pass the bot gate — not four route policies. Nothing beyond the gate was ever reached, which is why question 1 is genuinely open rather than already answered "no".

The artifact row is the interesting one: same client, same proxy, same host, and it returns 200. Something already distinguishes machine-reachable paths from browser-only ones there.

Why we are asking rather than building

The alternative is a relay tier holding a browser-born credential, which is refused (.github-private#835 Phase 2, restated on #338). The corrected evidence weakens it further: such a tier would still face the same challenge unless it also solved it, and solving a bot gate is precisely the thing we said we would not build. "The ask is taking too long" is true by construction and is never evidence for building it.

What we can already do, for context on scope

  • shared chats: read end to end (relay → toolpath Graph → pathbase door), deployed
  • a session's own transcript: read locally, no credential
  • a session reporting outward: built and deployed (infra#577), proven from a checkout-less session
  • reading another live session: nothing. Push works, pull does not exist.

We are not asking for a new capability surface. We are asking whether one already exists that we have not found, and if not, whether the path-exemption mechanism in question 2 is available.

Sending it

Owner sends; the account matters and this session cannot speak for it. When an answer comes back, record it as a row here with a link, so #338 step 15 and #342 can both discharge against it.

Related: #338 (door (a), and the corrected 403 table), #342 (the classifier names no route — same message, different wall), #337 (the postures this was measured across), .github-private#835 (door (b), refused).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions