Skip to content

[Proposal] Versioned Session Action Export #18469

@failuresmith

Description

@failuresmith

What variant of Codex are you using?

CLI

What feature would you like to see?

Ask

Introduce a small, versioned export surface for persisted session actions.

Goal:

  • Given a persisted session → return an ordered list of actions
  • Make it a documented, stable contract for external tools
  • Restrict V1 to data already persisted and reconstructible

Why

Codex already persists and reconstructs session history, but no surface is clearly defined as a stable contract.

This blocks tooling for questions like:

  • What commands ran?
  • What file changes occurred?
  • What tool calls happened, and in what order?
  • What can be safely replayed or inspected?

Rationale

A stable, versioned projection over persisted actions provides:

  • a minimal reproducibility surface
  • a safer alternative to depending on internal rollout formats
  • a foundation for future debugging / incident tooling

Routing question

Where should this live?

  • app-server (thread/read extension?)
  • rollout layer (as backing projection)
  • other surface if preferred

Additional information

Proposal

Expose a stable projection over persisted session history.

Possible entry points:

  • CLI: export actions from a session
  • API: return versioned action stream
  • Extension of thread/read with a documented projection

Prefer: a projection layer over existing persisted data (not raw rollout JSONL).

Example schema (V1)

  • session_id
  • turn_id
  • timestamp
  • action_type
  • tool_name
  • command
  • changed_paths
  • status

Non-goals

  • No reasoning or chain-of-thought
  • No raw prompts by default
  • No dashboards or analytics
  • No new logging system if existing persistence suffices
  • No full forensic completeness

Suggested V1 scope

Keep deliberately narrow:

  • opt-in
  • completed actions only
  • minimal schema
  • explicitly versioned
  • derived from persisted session data

Likely includes:

  • completed command executions
  • completed file changes
  • completed tool calls
  • durable turn/session markers

Excludes:

  • begin/request/delta events
  • approval flows
  • realtime ephemeral notifications

Grounding in current implementation

This proposal builds on existing behavior:

  • Rollouts are persisted and replayable
  • Persisted history is loaded into InitialHistory
  • thread/read + includeTurns returns stored history
  • persistExtendedHistory exists (without backfill guarantees)
  • Rollout items are already projected into turns

At the same time:

  • Persistence is selective (only certain “end” events)
  • Many events are intentionally not persisted
  • Realtime notifications are explicitly ephemeral
  • Stored outputs are already sanitized/truncated

Preference:

  • avoid making rollout JSONL the public contract
  • avoid relying on OTEL as the primary user-facing interface
  • expose a stable projection over persisted session history

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions