[Bug] Status line displays incorrect model across multiple Claude Code sessions

Resolved 💬 3 comments Opened Jan 7, 2026 by ntavelis Closed Jan 11, 2026

Bug Description

---
Title: Status line displays wrong model when changed in a different Claude Code session

Description:

When running multiple Claude Code sessions in different terminals, changing the model in one session incorr

Steps to Reproduce:

  1. Open Terminal 1 and start Claude Code
  2. Change model to Opus: /model opus
  3. Verify with /model - confirms Opus is active
  4. Verify status line shows "Opus"
  5. Open Terminal 2 and start a second Claude Code session
  6. In Terminal 2, change model to Sonnet: /model sonnet
  7. Check the status line in Terminal 1 (the Opus session)

Expected Behavior:

  • Terminal 1 status line should continue to display "Opus" because that session is still running Opus
  • Terminal 2 status line should display "Sonnet" because that session is running Sonnet
  • Each Claude Code session should maintain its own independent status line display

Actual Behavior:

  • Terminal 1 status line incorrectly changes to display "Sonnet" even though /model in Terminal 1 confirms it's still running Opus
  • The status line appears to be global/shared across all Claude Code sessions instead of being per-session
  • Asking Claude in Terminal 1 which model it is correctly returns Opus 4.5, but the status line shows Sonnet

Environment:

  • OS: Linux (Arch Linux 6.17.9-arch1-1)
  • Claude Code version: [output of claude --version]
  • Status line script: Custom script at ~/.claude/statusline-command.sh
  • Status line script correctly reads from model.display_name via jq

Additional Context:

The status line script implementation:
#!/bin/bash
input=$(cat)
MODEL_DISPLAY=$(echo "$input" | jq -r '.model.display_name')
CURRENT_DIR=$(echo "$input" | jq -r '.workspace.current_dir')
echo "[$MODEL_DISPLAY] ${CURRENT_DIR##*/}"

The issue suggests that either:

  1. The JSON context passed to status line scripts is shared/global across all Claude Code instances instead of being per-session
  2. Model changes trigger status line updates in all running sessions instead of only the session where the change occurred
  3. Multiple sessions may be reading from a shared state file

Each Claude Code session should maintain completely independent status line state.

Environment Info

  • Platform: linux
  • Terminal: alacritty
  • Version: 2.0.76
  • Feedback ID: 522000f0-7446-46be-9f81-36f2d960df53

Errors

[{"error":"Error: Request was aborted.\n    at OT.makeRequest (file:///home/antavelis/bin/npm/lib/node_modules/@anthropic-ai/claude-code/cli.js:857:3940)\n    at process.processTicksAndRejections (node:internal/process/task_queues:103:5)","timestamp":"2026-01-07T09:51:01.642Z"},{"error":"Error: EISDIR: illegal operation on a directory, read\n    at Module.readFileSync (node:fs:435:20)\n    at file:///home/antavelis/bin/npm/lib/node_modules/@anthropic-ai/claude-code/cli.js:9:429\n    at oI (file:///home/antavelis/bin/npm/lib/node_modules/@anthropic-ai/claude-code/cli.js:8:8084)\n    at Object.readFileSync (file:///home/antavelis/bin/npm/lib/node_modules/@anthropic-ai/claude-code/cli.js:9:404)\n    at zdB (file:///home/antavelis/bin/npm/lib/node_modules/@anthropic-ai/claude-code/cli.js:4739:22342)\n    at Object.call (file:///home/antavelis/bin/npm/lib/node_modules/@anthropic-ai/claude-code/cli.js:1027:942)\n    at Au5 (file:///home/antavelis/bin/npm/lib/node_modules/@anthropic-ai/claude-code/cli.js:2207:17446)\n    at runNextTicks (node:internal/process/task_queues:64:5)\n    at process.processImmediate (node:internal/timers:472:9)","timestamp":"2026-01-07T09:52:39.151Z"}]

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗