[BUG] `claude -h` looks bad when terminal width narrower than 92 columns
Resolved 💬 2 comments Opened Apr 11, 2026 by xpe Closed May 24, 2026
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?
Here is claude -h with a 91 column wide terminal:
% claude -h
Usage: claude [options] [command] [prompt]
Claude Code - starts an interactive session by default, use -p/--print for non-interactive
output
Arguments:
prompt Your prompt
Options:
--add-dir <directories...> Additional directories to allow tool access to
--agent <agent> Agent for the current session. Overrides the 'agent' setting.
--agents <json> JSON object defining custom agents (e.g. '{"reviewer": {"description": "Reviews code", "prompt": "You are a code reviewer"}}')
--allow-dangerously-skip-permissions Enable bypassing all permission checks as an option, without it being enabled by default. Recommended only for sandboxes with no internet access.
--allowedTools, --allowed-tools <tools...> Comma or space-separated list of tool names to allow (e.g. "Bash(git:*) Edit")
--append-system-prompt <prompt> Append a system prompt to the default system prompt
--bare Minimal mode: skip hooks, LSP, plugin sync, attribution, auto-memory, background prefetches, keychain reads, and CLAUDE.md auto-discovery. Sets CLAUDE_CODE_SIMPLE=1. Anthropic auth is strictly ANTHROPIC_API_KEY or apiKeyHelper via --settings (OAuth and keychain are never read). 3P providers (Bedrock/Vertex/Foundry) use their own credentials. Skills still resolve via /skill-name. Explicitly provide context via: --system-prompt[-file], --append-system-prompt[-file], --add-dir (CLAUDE.md dirs), --mcp-config, --settings, --agents, --plugin-dir.
--betas <betas...> Beta headers to include in API requests (API key users only)
--brief Enable SendUserMessage tool for agent-to-user communication
--chrome Enable Claude in Chrome integration
-c, --continue Continue the most recent conversation in the current directory
--dangerously-skip-permissions Bypass all permission checks. Recommended only for sandboxes with no internet access.
-d, --debug [filter] Enable debug mode with optional category filtering (e.g., "api,hooks" or "!1p,!file")
--debug-file <path> Write debug logs to a specific file path (implicitly enables debug mode)
--disable-slash-commands Disable all skills
--disallowedTools, --disallowed-tools <tools...> Comma or space-separated list of tool names to deny (e.g. "Bash(git:*) Edit")
--effort <level> Effort level for the current session (low, medium, high, max)
--exclude-dynamic-system-prompt-sections Move per-machine sections (cwd, env info, memory paths, git status) from the system prompt into the first user message. Improves cross-user prompt-cache reuse. Only applies with the default system prompt (ignored with --system-prompt). (default: false)
--fallback-model <model> Enable automatic fallback to specified model when default model is overloaded (only works with --print)
--file <specs...> File resources to download at startup. Format: file_id:relative_path (e.g., --file file_abc:doc.txt file_def:img.png)
--fork-session When resuming, create a new session ID instead of reusing the original (use with --resume or --continue)
--from-pr [value] Resume a session linked to a PR by PR number/URL, or open interactive picker with optional search term
-h, --help Display help for command
--ide Automatically connect to IDE on startup if exactly one valid IDE is available
--include-hook-events Include all hook lifecycle events in the output stream (only works with --output-format=stream-json)
--include-partial-messages Include partial message chunks as they arrive (only works with --print and --output-format=stream-json)
--input-format <format> Input format (only works with --print): "text" (default), or "stream-json" (realtime streaming input) (choices: "text", "stream-json")
--json-schema <schema> JSON Schema for structured output validation. Example: {"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}
--max-budget-usd <amount> Maximum dollar amount to spend on API calls (only works with --print)
--mcp-config <configs...> Load MCP servers from JSON files or strings (space-separated)
--mcp-debug [DEPRECATED. Use --debug instead] Enable MCP debug mode (shows MCP server errors)
--model <model> Model for the current session. Provide an alias for the latest model (e.g. 'sonnet' or 'opus') or a model's full name (e.g. 'claude-sonnet-4-6').
-n, --name <name> Set a display name for this session (shown in /resume and terminal title)
--no-chrome Disable Claude in Chrome integration
--no-session-persistence Disable session persistence - sessions will not be saved to disk and cannot be resumed (only works with --print)
--output-format <format> Output format (only works with --print): "text" (default), "json" (single result), or "stream-json" (realtime streaming) (choices: "text", "json", "stream-json")
--permission-mode <mode> Permission mode to use for the session (choices: "acceptEdits", "auto", "bypassPermissions", "default", "dontAsk", "plan")
--plugin-dir <path> Load plugins from a directory for this session only (repeatable: --plugin-dir A --plugin-dir B) (default: [])
-p, --print Print response and exit (useful for pipes). Note: The workspace trust dialog is skipped when Claude is run with the -p mode. Only use this flag in directories you trust.
--remote-control-session-name-prefix <prefix> Prefix for auto-generated Remote Control session names (default: hostname)
--replay-user-messages Re-emit user messages from stdin back on stdout for acknowledgment (only works with --input-format=stream-json and --output-format=stream-json)
-r, --resume [value] Resume a conversation by session ID, or open interactive picker with optional search term
--session-id <uuid> Use a specific session ID for the conversation (must be a valid UUID)
--setting-sources <sources> Comma-separated list of setting sources to load (user, project, local).
--settings <file-or-json> Path to a settings JSON file or a JSON string to load additional settings from
--strict-mcp-config Only use MCP servers from --mcp-config, ignoring all other MCP configurations
--system-prompt <prompt> System prompt to use for the session
--tmux Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.
--tools <tools...> Specify the list of available tools from the built-in set. Use "" to disable all tools, "default" to use all tools, or specify tool names (e.g. "Bash,Edit,Read").
--verbose Override verbose mode setting from config
-v, --version Output the version number
-w, --worktree [name] Create a new git worktree for this session (optionally specify a name)
Commands:
agents [options] List configured agents
auth Manage authentication
auto-mode Inspect auto mode classifier configuration
doctor Check the health of your Claude Code auto-updater. Note: The workspace trust dialog is skipped and stdio servers from .mcp.json are spawned for health checks. Only use this command in directories you trust.
install [options] [target] Install Claude Code native build. Use [target] to specify version (stable, latest, or specific version)
mcp Configure and manage MCP servers
plugin|plugins Manage Claude Code plugins
setup-token Set up a long-lived authentication token (requires Claude subscription)
update|upgrade Check for updates and install if available
What Should Happen?
92 column output:
% claude -h
Usage: claude [options] [command] [prompt]
Claude Code - starts an interactive session by default, use -p/--print for non-interactive
output
Arguments:
prompt Your prompt
Options:
--add-dir <directories...> Additional directories to allow tool
access to
--agent <agent> Agent for the current session.
Overrides the 'agent' setting.
--agents <json> JSON object defining custom agents
(e.g. '{"reviewer": {"description":
"Reviews code", "prompt": "You are a
code reviewer"}}')
--allow-dangerously-skip-permissions Enable bypassing all permission checks
as an option, without it being enabled
by default. Recommended only for
sandboxes with no internet access.
--allowedTools, --allowed-tools <tools...> Comma or space-separated list of tool
names to allow (e.g. "Bash(git:*)
Edit")
--append-system-prompt <prompt> Append a system prompt to the default
system prompt
--bare Minimal mode: skip hooks, LSP, plugin
sync, attribution, auto-memory,
background prefetches, keychain reads,
and CLAUDE.md auto-discovery. Sets
CLAUDE_CODE_SIMPLE=1. Anthropic auth is
strictly ANTHROPIC_API_KEY or
apiKeyHelper via --settings (OAuth and
keychain are never read). 3P providers
(Bedrock/Vertex/Foundry) use their own
credentials. Skills still resolve via
/skill-name. Explicitly provide context
via: --system-prompt[-file],
--append-system-prompt[-file],
--add-dir (CLAUDE.md dirs),
--mcp-config, --settings, --agents,
--plugin-dir.
--betas <betas...> Beta headers to include in API requests
(API key users only)
--brief Enable SendUserMessage tool for
agent-to-user communication
--chrome Enable Claude in Chrome integration
-c, --continue Continue the most recent conversation
in the current directory
--dangerously-skip-permissions Bypass all permission checks.
Recommended only for sandboxes with no
internet access.
-d, --debug [filter] Enable debug mode with optional
category filtering (e.g., "api,hooks"
or "!1p,!file")
--debug-file <path> Write debug logs to a specific file
path (implicitly enables debug mode)
--disable-slash-commands Disable all skills
--disallowedTools, --disallowed-tools <tools...> Comma or space-separated list of tool
names to deny (e.g. "Bash(git:*) Edit")
--effort <level> Effort level for the current session
(low, medium, high, max)
--exclude-dynamic-system-prompt-sections Move per-machine sections (cwd, env
info, memory paths, git status) from
the system prompt into the first user
message. Improves cross-user
prompt-cache reuse. Only applies with
the default system prompt (ignored with
--system-prompt). (default: false)
--fallback-model <model> Enable automatic fallback to specified
model when default model is overloaded
(only works with --print)
--file <specs...> File resources to download at startup.
Format: file_id:relative_path (e.g.,
--file file_abc:doc.txt
file_def:img.png)
--fork-session When resuming, create a new session ID
instead of reusing the original (use
with --resume or --continue)
--from-pr [value] Resume a session linked to a PR by PR
number/URL, or open interactive picker
with optional search term
-h, --help Display help for command
--ide Automatically connect to IDE on startup
if exactly one valid IDE is available
--include-hook-events Include all hook lifecycle events in
the output stream (only works with
--output-format=stream-json)
--include-partial-messages Include partial message chunks as they
arrive (only works with --print and
--output-format=stream-json)
--input-format <format> Input format (only works with --print):
"text" (default), or "stream-json"
(realtime streaming input) (choices:
"text", "stream-json")
--json-schema <schema> JSON Schema for structured output
validation. Example:
{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}
--max-budget-usd <amount> Maximum dollar amount to spend on API
calls (only works with --print)
--mcp-config <configs...> Load MCP servers from JSON files or
strings (space-separated)
--mcp-debug [DEPRECATED. Use --debug instead]
Enable MCP debug mode (shows MCP server
errors)
--model <model> Model for the current session. Provide
an alias for the latest model (e.g.
'sonnet' or 'opus') or a model's full
name (e.g. 'claude-sonnet-4-6').
-n, --name <name> Set a display name for this session
(shown in /resume and terminal title)
--no-chrome Disable Claude in Chrome integration
--no-session-persistence Disable session persistence - sessions
will not be saved to disk and cannot be
resumed (only works with --print)
--output-format <format> Output format (only works with
--print): "text" (default), "json"
(single result), or "stream-json"
(realtime streaming) (choices: "text",
"json", "stream-json")
--permission-mode <mode> Permission mode to use for the session
(choices: "acceptEdits", "auto",
"bypassPermissions", "default",
"dontAsk", "plan")
--plugin-dir <path> Load plugins from a directory for this
session only (repeatable: --plugin-dir
A --plugin-dir B) (default: [])
-p, --print Print response and exit (useful for
pipes). Note: The workspace trust
dialog is skipped when Claude is run
with the -p mode. Only use this flag in
directories you trust.
--remote-control-session-name-prefix <prefix> Prefix for auto-generated Remote
Control session names (default:
hostname)
--replay-user-messages Re-emit user messages from stdin back
on stdout for acknowledgment (only
works with --input-format=stream-json
and --output-format=stream-json)
-r, --resume [value] Resume a conversation by session ID, or
open interactive picker with optional
search term
--session-id <uuid> Use a specific session ID for the
conversation (must be a valid UUID)
--setting-sources <sources> Comma-separated list of setting sources
to load (user, project, local).
--settings <file-or-json> Path to a settings JSON file or a JSON
string to load additional settings from
--strict-mcp-config Only use MCP servers from --mcp-config,
ignoring all other MCP configurations
--system-prompt <prompt> System prompt to use for the session
--tmux Create a tmux session for the worktree
(requires --worktree). Uses iTerm2
native panes when available; use
--tmux=classic for traditional tmux.
--tools <tools...> Specify the list of available tools
from the built-in set. Use "" to
disable all tools, "default" to use all
tools, or specify tool names (e.g.
"Bash,Edit,Read").
--verbose Override verbose mode setting from
config
-v, --version Output the version number
-w, --worktree [name] Create a new git worktree for this
session (optionally specify a name)
Commands:
agents [options] List configured agents
auth Manage authentication
auto-mode Inspect auto mode classifier
configuration
doctor Check the health of your Claude Code
auto-updater. Note: The workspace trust
dialog is skipped and stdio servers
from .mcp.json are spawned for health
checks. Only use this command in
directories you trust.
install [options] [target] Install Claude Code native build. Use
[target] to specify version (stable,
latest, or specific version)
mcp Configure and manage MCP servers
plugin|plugins Manage Claude Code plugins
setup-token Set up a long-lived authentication
token (requires Claude subscription)
update|upgrade Check for updates and install if
available
Error Messages/Logs
Steps to Reproduce
Just run claude -h to reproduce
Claude Model
N/A (pertains to the CLI)
Is this a regression?
I don't know if this is a regression.
Last Working Version
Unknown, if applicable.
Claude Code Version
2.1.101 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Other
Additional Information
Reproducible with both Terminal.app and Ghostty. This issue relates to terminal width, not the terminal itself.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗