claude CLI 提供 16 类启动参数,覆盖会话恢复、模型选择、权限控制、输出格式、系统提示、Agent 配置、MCP 加载、预算限制等所有场景。掌握 -p/--print(无交互模式)、--permission-mode、--append-system-prompt 和 --add-dir 这几个核心参数,可以解锁绝大多数自动化和集成场景。
Claude Code CLI 启动参数完全参考:16 类命令行选项与环境变量 #
会话管理 #
| 参数 |
简写 |
说明 |
--continue |
-c |
继续当前目录最近的会话 |
--resume |
-r |
通过 ID 或名称恢复指定会话,不带参数显示选择器 |
--from-pr <NUMBER|URL> |
|
恢复关联到指定 GitHub PR 的会话 |
--fork-session |
|
恢复时创建新会话 ID(与 --resume 或 --continue 配合使用) |
--session-id <UUID> |
|
使用指定的会话 ID(必须是有效 UUID) |
--no-session-persistence |
|
禁用会话持久化(仅 print 模式) |
--remote |
|
在 claude.ai 创建新的 web 会话 |
--teleport |
|
将 web 会话拉回本地终端 |
模型与配置 #
| 参数 |
说明 |
--model <NAME> |
设置模型:别名(sonnet/opus/haiku)或完整 ID |
--fallback-model <NAME> |
默认模型过载时的备用模型(仅 print 模式) |
--betas <LIST> |
包含在 API 请求中的 beta 头(仅 API key 用户) |
权限与安全 #
| 参数 |
说明 |
--dangerously-skip-permissions |
跳过所有权限提示,极度谨慎使用 |
--allow-dangerously-skip-permissions |
允许后续激活权限绕过,但不立即激活 |
--permission-mode <MODE> |
以指定权限模式启动:default/plan/acceptEdits/bypassPermissions |
--allowedTools <TOOLS> |
无需提示即可执行的工具(permission rule 语法) |
--disallowedTools <TOOLS> |
从模型上下文完全移除的工具 |
--tools <TOOLS> |
限制 Claude 可以使用的内置工具("" 禁用所有) |
--permission-prompt-tool <TOOL> |
在非交互模式中处理权限提示的 MCP 工具 |
--dangerously-skip-permissions 替代方案:在 settings.json 中配置 permissions.defaultMode: "bypassPermissions" 加 permissions.allow 规则,避免在命令行中使用危险参数。
输出与格式 #
| 参数 |
说明 |
--print / -p |
无交互模式(headless/SDK 模式),打印响应后退出 |
--output-format <FORMAT> |
输出格式:text/json/stream-json |
--input-format <FORMAT> |
输入格式:text/stream-json |
--json-schema <SCHEMA> |
获取符合 schema 的验证 JSON(仅 print 模式) |
--include-partial-messages |
包含流式分片事件(需 --print 和 stream-json) |
--verbose |
启用详细日志,显示完整的逐轮输出 |
常用 -p 组合:
# 单次问答
claude -p "解释这段代码" < code.ts
# 输出 JSON
claude -p --output-format json "分析 src/"
# 流式输出
claude -p --output-format stream-json "写一篇文章"
# 限制轮次和预算
claude -p --max-turns 5 --max-budget-usd 0.5 "重构这个模块"
系统提示 #
| 参数 |
说明 |
--system-prompt <TEXT> |
替换整个系统提示(不推荐,会丢失内置行为) |
--system-prompt-file <PATH> |
从文件加载系统提示(仅 print 模式) |
--append-system-prompt <TEXT> |
向默认系统提示追加自定义内容(推荐) |
--append-system-prompt-file <PATH> |
向默认提示追加文件内容(仅 print 模式) |
Agent 与 Subagent #
| 参数 |
说明 |
--agent <NAME> |
为当前会话指定 agent |
--agents <JSON> |
通过 JSON 动态定义自定义 subagent |
--teammate-mode <MODE> |
Agent 团队显示模式:auto/in-process/tmux |
MCP 与插件 #
| 参数 |
说明 |
--mcp-config <PATH|JSON> |
从 JSON 文件或字符串加载 MCP 服务器 |
--strict-mcp-config |
只使用 --mcp-config 中的 MCP,忽略其他配置 |
--plugin-dir <PATH> |
仅本次会话从指定目录加载插件(可重复使用) |
目录与工作区 #
| 参数 |
说明 |
--add-dir <PATH> |
添加额外工作目录,Claude 可以访问 |
--worktree / -w |
在隔离的 git worktree 中启动(从 HEAD 分支) |
预算与限制 #
| 参数 |
说明 |
--max-budget-usd <AMOUNT> |
API 调用最大美元金额(仅 print 模式) |
--max-turns <NUMBER> |
限制 agentic turn 数量(仅 print 模式) |
集成 #
| 参数 |
说明 |
--chrome |
启用 Chrome 浏览器集成 |
--no-chrome |
本次会话禁用 Chrome 集成 |
--ide |
启动时自动连接到 IDE |
初始化与维护 #
| 参数 |
说明 |
--init |
运行初始化 hooks 并进入交互模式 |
--init-only |
只运行初始化 hooks 后退出 |
--maintenance |
运行维护 hooks 后退出 |
调试与诊断 #
| 参数 |
说明 |
--debug <CATEGORIES> |
启用调试模式,可选分类过滤(如 "api,hooks") |
Settings 覆盖 #
| 参数 |
说明 |
--settings <PATH|JSON> |
从 JSON 文件或字符串加载 settings |
--setting-sources <LIST> |
指定加载来源:user/project/local(逗号分隔) |
--disable-slash-commands |
本次会话禁用所有 skills 和 slash commands |
子命令 #
| 子命令 |
说明 |
claude |
启动交互式 REPL |
claude "query" |
带初始 prompt 启动 REPL |
claude agents |
列出已配置的 agents |
claude auth |
管理认证 |
claude doctor |
从命令行运行诊断 |
claude install |
安装或切换原生构建 |
claude mcp |
配置 MCP 服务器(add/remove/list/get/enable) |
claude update |
更新到最新版本 |
启动专属环境变量 #
以下变量只能在 shell 中设置,不能通过 settings.json 的 env 键配置:
| 变量 |
说明 |
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 |
启用实验性 Agent Teams |
CLAUDE_BASH_NO_LOGIN=1 |
跳过 BashTool 的 login shell |
USE_BUILTIN_RIPGREP=0 |
使用系统 ripgrep(Alpine Linux) |
CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 |
允许附加目录加载 CLAUDE.md |
CCR_FORCE_BUNDLE=1 |
claude --remote 强制打包上传本地仓库 |
其他可通过 settings.json 的 env 键配置的变量(如 MAX_THINKING_TOKENS、CLAUDE_CODE_EFFORT_LEVEL、CLAUDE_CODE_SUBAGENT_MODEL 等)参见 Settings 配置参考。
FAQ #
Q: -p/--print 模式和交互模式有什么核心区别?
A: -p 模式下 Claude 接收一个 prompt 后执行任务,任务结束后立即退出,不进入 REPL。适合 CI/CD 流水线、shell 脚本自动化、以及需要捕获输出的场景。--output-format json 可以获取结构化输出(包含工具调用详情)。
Q: --permission-mode acceptEdits 和 --dangerously-skip-permissions 有什么区别?
A: acceptEdits 只跳过文件编辑的确认提示,其他操作(如 Bash 命令)仍需确认;--dangerously-skip-permissions 跳过所有权限检查,包括执行 shell 命令。日常自动化推荐用 acceptEdits,配合 permissions.allow 白名单 bash 命令。
Q: 怎么在脚本中传入多行 prompt?
A: 使用 heredoc 或管道:echo "分析这个文件" | claude -p,或 claude -p < prompt.txt。也可以用 --input-format stream-json 传入 JSON 流。
Q: --worktree 和 subagent 的 isolation: "worktree" 有什么区别?
A: --worktree 是 CLI 参数,为整个主会话创建隔离的 git worktree;isolation: "worktree" 是 subagent frontmatter 字段,只为该 subagent 创建隔离 worktree,主会话不受影响。