Add effort level to status line JSON

Resolved 💬 4 comments Opened Mar 19, 2026 by Nutcasey Closed Apr 24, 2026

Summary

The status line command receives a JSON payload on stdin with session metadata, but the current effort level is not included. This makes it impossible to display the active effort level in a custom status line.

Current status line JSON fields

{
  "session_id": "...",
  "model": { "id": "...", "display_name": "..." },
  "workspace": { "current_dir": "...", "project_dir": "...", "added_dirs": [] },
  "version": "...",
  "output_style": { "name": "..." },
  "cost": { ... },
  "context_window": { ... },
  "exceeds_200k_tokens": true
}

Request

Add the session-scoped effort level to the status line JSON, e.g.:

{
  "effort_level": "max"
}

This should reflect the effective effort for the current session, including any /effort override, not just the persistent settings.json default.

Why

  • output_style is already exposed — effort level is equally important session-level config
  • Users running multiple Claude Code windows with different effort levels have no way to tell them apart from the status line
  • The only workaround (reading settings.json) only shows the default, not per-session overrides from /effort

Workaround attempted

Reading effortLevel from ~/.claude/settings.json in the status line script. This works for the persistent default but not for session-scoped /effort overrides.

View original on GitHub ↗

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