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 包含流式分片事件(需 --printstream-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.jsonenv 键配置:

变量 说明
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.jsonenv 键配置的变量(如 MAX_THINKING_TOKENSCLAUDE_CODE_EFFORT_LEVELCLAUDE_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,主会话不受影响。