Skip to content

[Compat] Claude Code v2.1.79–v2.1.81: --channels message injection, --bare mode, and rate_limits statusline field #15

@delexw

Description

@delexw

Claude Code Version

v2.1.79–v2.1.81 (2025-03-xx)

Change Description

Three changes across v2.1.79–v2.1.81 are worth tracking for parser compatibility:

1. v2.1.80 — --channels research preview (MCP server message push)

Added --channels (research preview) — allow MCP servers to push messages into your session

MCP servers can now inject messages directly into an active session. When a channel message arrives, it is likely written to the session JSONL transcript. These externally-pushed messages may carry a new type value, a new source discriminator, or an unfamiliar message.role not yet handled by the parser. If the parser discards or panics on unrecognized type values, these entries will be silently dropped.

2. v2.1.80 — Fixed --resume dropping parallel tool results

Fixed --resume dropping parallel tool results — sessions with parallel tool calls now restore all tool_use/tool_result pairs

While this is a bug-fix, it confirms that JSONL sessions can contain interleaved parallel tool_use/tool_result blocks. Parsers that assume sequential pairing (one tool_use always followed immediately by its tool_result) may misparse or skip entries in multi-tool-call assistant messages.

3. v2.1.81 — --bare mode for scripted -p calls

Added --bare flag for scripted -p calls — skips hooks, LSP, plugin sync, and skill directory walks; requires ANTHROPIC_API_KEY or an apiKeyHelper via --settings (OAuth and keychain auth disabled); auto-memory fully disabled

In bare mode many fields that are normally populated (e.g. gitBranch, cwd, agentName, teamName, hook-generated progress entries) may be absent. If the parser treats those as mandatory (rather than optional) it may discard or fail on entries written during a bare session.

Impact on tail-claude-gui

Finding Severity Impact
--channels pushed messages may introduce new JSONL entry types Moderate Parser may encounter type values it doesn't recognize; entries silently discarded
Parallel tool_use/tool_result interleaving confirmed present Low Parser must not assume 1-to-1 sequential pairing
--bare mode may produce entries with missing optional fields Low Parser should treat non-critical fields as Option<T>, not required

Affected Parser Code

  • src-tauri/src/parser/entry.rs — Entry struct and type dispatch
  • Any deserialization logic that assumes sequential tool_use/tool_result ordering
  • Any field access that panics or discards entries when gitBranch, cwd, agentName, or hook-related fields are absent

Suggested Fix

  1. --channels / unknown types: Ensure the type discriminant arm includes a catch-all that logs but does not discard or panic. Log the raw JSON for inspection when an unknown type is encountered.
  2. Parallel tool pairs: Collect all tool_use blocks in an assistant message first, then match tool_result blocks by tool_use_id, rather than assuming positional ordering.
  3. --bare missing fields: Audit all struct fields that reference gitBranch, cwd, agentName, teamName, and hook-related fields; confirm they are Option<String> / Option<T> rather than required.

Source

Release notes v2.1.79–v2.1.81 at /Users/yang.liu/.claude/scheduler/.jsonl-compat-release-notes.tmp

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions