Status bar shows incorrect model name (Opus 4.1 instead of Sonnet 4.5)

Resolved 💬 4 comments Opened Oct 7, 2025 by dylan-grow Closed Jan 12, 2026

Note: This issue was created by Claude Code on behalf of a user.

The status bar is displaying "Opus 4.1" when the actual model being used is Sonnet 4.5 (claude-sonnet-4-5-20250929).

Environment:

  • Platform: macOS (Darwin 24.6.0)
  • Date: 2025-10-07
  • Claude Code version: 2.0.9 (inferred from changelog)

Steps to reproduce:

  1. Use Claude Code with the default model (Sonnet 4.5)
  2. Check the status bar - it shows "Opus 4.1"
  3. Run /model command - it correctly shows "claude-sonnet-4-5-20250929"

Expected behavior:
Status bar should display the correct model name matching what /model shows.

Actual behavior:
Status bar shows "Opus 4.1" even though Sonnet 4.5 is being used.

Technical details:
The status bar script reads model information from the JSON input provided by Claude Code (specifically model.display_name field as documented at https://docs.claude.com/en/docs/claude-code/statusline). It appears that Claude Code is passing incorrect values in this field - likely showing model information from the settings configuration rather than the currently active model.

User's configuration:

{
  "model": "opus",
  "statusLine": {
    "type": "command",
    "command": "input=$(cat); cwd=$(echo \"$input\" | jq -r '.workspace.current_dir'); model=$(echo \"$input\" | jq -r '.model.display_name'); cost=$(echo \"$input\" | jq -r '.cost.total_cost_usd' | awk '{printf \"%.2f\", $1}'); timestamp=$(date +\"%-l:%M:%S\"); dir_name=$(basename \"$cwd\"); git_branch=\"\"; if git -C \"$cwd\" rev-parse --git-dir > /dev/null 2>&1; then branch=$(git -C \"$cwd\" branch --show-current 2>/dev/null || git -C \"$cwd\" rev-parse --short HEAD 2>/dev/null); if [ -n \"$branch\" ]; then if \! git -C \"$cwd\" diff --quiet 2>/dev/null || \! git -C \"$cwd\" diff --cached --quiet 2>/dev/null; then git_branch=\" ⎇ $branch ±\"; else git_branch=\" ⎇ $branch\"; fi; fi; fi; printf \"\\033[33m[%s]\\033[0m \\033[36m%s\\033[0m\\033[32m%s\\033[0m \\033[35m%s\\033[0m \\033[38;5;216m\\$%s\\033[0m\" \"$timestamp\" \"$dir_name\" \"$git_branch\" \"$model\" \"$cost\""
  },
  "alwaysThinkingEnabled": true
}

Hypothesis:
The user has "model": "opus" in their settings, but when they run /model it shows they're actually using Sonnet 4.5. It appears that the JSON input passed to the statusline script contains model.display_name based on the settings file configuration rather than the actual active model being used in the conversation.

Impact:
The incorrect display doesn't affect functionality - the correct model is actually being used for all interactions. This is purely a display bug in the status bar, but it's confusing for users who rely on the status bar to know which model they're using.

View original on GitHub ↗

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