[BUG] Bare `claude` invocation opens agent view instead of interactive session, contradicting documented default
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Summary
claude --help states:
Claude Code - starts an interactive session by default, use -p/--print for non-interactive output
In v2.1.150, bare claude (no arguments, no positional prompt, zero background sessions present) does not start an interactive session. It opens agent view in onboarding mode, presenting "Type a task below to start a background session" as the landing UI.
This contradicts the documented default and silently flips the execution model from synchronous-by-default to async-by-default for any user who relies on bare claude as their entry point.
Reproduction
# Verify clean state
ls ~/.claude/jobs/ # empty
pkill -f "claude.*supervisor"
pkill -f "claude.*daemon"
# Bare invocation
cd ~/any-project
claude
Expected: Interactive Claude Code session prompt.
Actual: Agent view dashboard with "0 awaiting input · 0 working · 0 completed" and prompt placeholder "start a task in the background."
Passing any positional argument (claude "hello") or claude --continue correctly opens an interactive session, confirming this is specific to the zero-argument launch path.
Environment
- Claude Code v2.1.150
- macOS (Apple Silicon M1)
- zsh
- Max plan
- Launched from VS Code / Cursor integrated terminal and standalone Terminal.app — same behavior
Why this matters (beyond the doc mismatch)
Shell wrappers, governance hooks, and CI integrations written against the documented contract (bare claude → interactive) now silently route users into a background-session dashboard. In my case, a worktree-guard function with command claude "$@" as its pass-through carried users straight into agent view with no warning. The pass-through assumed "bare = interactive" per the docs.
The async-by-default shift is a legitimate product direction, but it's a contract change worth shipping deliberately rather than inheriting through the default landing screen. Worth noting: even at the Max tier, individual users have no documented opt-out — disableAgentView is gated behind Team/Enterprise admin settings, meaning a $200/mo Max user has fewer governance levers than a $25/seat Team admin.
Requests
- Fix the docs or fix the behavior — either bare
claudeshould open interactive (matching--help), or--helpshould document agent view as the new launcher.
- Expose
disableAgentViewfor individual tiers. Currently only Team/Enterprise admins can set it. Pro/Max users have no documented opt-out for the launcher behavior.
- Add a
defaultLaunchModeuser setting in~/.claude/settings.jsonwith valuesinteractive|agents, defaulting tointeractiveto match--help. This gives users a stable, declarative contract instead of a behavior coupled to whether background sessions happen to exist.
Workaround for others hitting this
# In ~/.zshrc
claude() {
if [ $# -eq 0 ]; then
command claude --continue 2>/dev/null || command claude " "
else
command claude "$@"
fi
}
What Should Happen?
Requests
- Fix the docs or fix the behavior — either bare
claudeshould open interactive (matching--help), or--helpshould document agent view as the new launcher.
- Expose
disableAgentViewfor individual tiers. Currently only Team/Enterprise admins can set it. Pro/Max users have no documented opt-out for the launcher behavior.
- Add a
defaultLaunchModeuser setting in~/.claude/settings.jsonwith valuesinteractive|agents, defaulting tointeractiveto match--help. This gives users a stable, declarative contract instead of a behavior coupled to whether background sessions happen to exist.
Error Messages/Logs
Steps to Reproduce
Workaround for others hitting this
# In ~/.zshrc
claude() {
if [ $# -eq 0 ]; then
command claude --continue 2>/dev/null || command claude " "
else
command claude "$@"
fi
}
Claude Model
Not sure / Multiple models
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
2.1.5.0
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Cursor
Additional Information
Workaround for others hitting this
# In ~/.zshrc
claude() {
if [ $# -eq 0 ]; then
command claude --continue 2>/dev/null || command claude " "
else
command claude "$@"
fi
}
<img width="1680" height="1020" alt="Image" src="https://github.com/user-attachments/assets/be5f9496-0d8c-4d9e-b55b-d82d85920c3b" />
<img width="1680" height="1020" alt="Image" src="https://github.com/user-attachments/assets/d555761d-a9e7-4f7c-85a8-b44e03383a81" />
<img width="1680" height="1020" alt="Image" src="https://github.com/user-attachments/assets/9f3b567b-50f8-4695-8e10-9ee4d72202d9" />
<img width="1680" height="1020" alt="Image" src="https://github.com/user-attachments/assets/8aa89518-3d1e-4ba2-8039-316ad3f4894e" />
<img width="1680" height="1020" alt="Image" src="https://github.com/user-attachments/assets/aabf0c16-067e-469a-91f8-2dd7f2256977" />
<img width="1680" height="1020" alt="Image" src="https://github.com/user-attachments/assets/cd145c40-2c68-4358-b865-bb76b6edb8b8" />
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗