命令字典
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
通过 SDK 查询然后退出
claude -p "<query>"claude -p "explain this function"-p(完整写法 --print)让 claude 不进入交互式界面,而是以非交互模式运行:接收一条 prompt,跑完 agent loop,把结果打印到 stdout 后退出。官方 CLI 参考对它的定义是"Print response without interactive mode",并指向 Agent SDK 文档了解编程用法。官方 headless 文档把这种用法称为通过 CLI 使用 Agent SDK(claude -p),拿到的是和 Claude Code 相同的 Tool、agent loop 和上下文管理。
-p 用来开启非交互模式,prompt 直接写在命令行里(claude -p "query")。也可以省略位置参数,从 stdin 读入(官方示例 gh pr diff "$1" | claude -p --append-system-prompt "...")。--output-format 默认 text,可选 json、stream-json。# 最基本用法
claude -p "What does the auth module do?"
# 管道输入,结果重定向到文件
cat build-error.txt | claude -p 'concisely explain the root cause of this build error' > output.txt
# 预授权 Tool,免去权限弹窗
claude -p "Run the test suite and fix any failures" --allowedTools "Bash,Read,Edit"
# 结构化输出,用 jq 取字段
claude -p "Summarize this project" --output-format json | jq -r '.result'
# 续接对话
claude -p "Review this codebase for performance issues"
claude -p "Now focus on the database queries" --continue
--output-format json 的返回包含 result、session ID 和 metadata,还包含 total_cost_usd 以及分模型的成本明细。官方注明这些数字是客户端估算,可能与实际账单不同。
仅用于 print 模式的 flag(官方 CLI 参考中,--json-schema、--max-turns、--max-budget-usd、--no-session-persistence 标注为 print mode only,其余写作 for print mode、in print mode 或 Requires --print),摘录常用项:
| flag | 作用 |
|---|---|
--output-format | text / json / stream-json |
--input-format | text / stream-json |
--json-schema | 获取符合 JSON Schema 的验证输出 |
--max-turns | 限制 agentic turn 数,达到上限时报错退出,默认无限制 |
--max-budget-usd | API 花费上限,超出后停止 |
--no-session-persistence | 不把会话保存到磁盘,无法 resume |
--include-partial-messages | 输出包含流式增量事件 |
--permission-prompts | 设定谁来回答权限提示(host / none) |
依赖关系:
--include-partial-messages 需要 --print + --output-format stream-json--prompt-suggestions 需要 --print + --output-format stream-json + --verbose--replay-user-messages 需要 --input-format stream-json + --output-format stream-json--json-schema 的官方示例与 --output-format json 搭配使用,结构化结果出现在 structured_output 字段明确不兼容:官方 headless 文档写明"Not every CLI option combines with -p":--bg 会被拒绝;--cloud 带任务描述时也会被拒绝,并给出指明冲突的错误。
常用搭配:--continue / --resume、--allowedTools、--permission-mode、--append-system-prompt、--bare。
| 约束 | 说明 |
|---|---|
| stdin 上限 10MB | 超出时 Claude Code 报清晰错误并以非 0 退出;大输入应写入文件,在 prompt 里引用路径 |
| 不弹 workspace trust 对话框 | 官方文档说明,不加 --bare 时 -p 会运行项目 .claude/settings.json 里的 Hook 并连接 .mcp.json 里的 server,即使目录从未被信任 |
| 终端专属内置命令不可用 | 例如 /login;用户调用的 Skill 和自定义命令可用,在 prompt 里写 /skill-name 即可 |
| 后台 Bash 任务 | 最终结果返回且 stdin 关闭约 5 秒后,该 shell 被终止 |
| 后台 subagent / workflow | claude -p 会保持打开直到其完成;默认连续空闲等待 10 分钟后放弃,可用 CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS 调整,设为 0 则不设上限 |
| SIGTERM | 以退出码 143 退出,进行中的 turn 不记录 result;要正常结束 turn,先发 SIGINT |
-p 下的权限起始模式:官方文档写明 -p 的内置起始权限模式是 Manual,需要其他行为时自行传 --permission-mode(auto、dontAsk、acceptEdits)。
以下均来自官方 headless 文档的示例:
claude --bare -p "Summarize README.md" --allowedTools "Read"。--bare 跳过 Hook、Skill、plugin、MCP server、auto memory 和 CLAUDE.md 的自动发现,让每台机器上结果一致;官方称其是脚本和 SDK 调用的推荐模式,并将在未来版本成为 -p 的默认。bare 模式不读取 OAuth 凭据或系统 keychain,需要设置 ANTHROPIC_API_KEY。git diff main | claude -p "you are a typo linter. ..."。gh pr diff "$1" | claude -p --append-system-prompt "You are a security engineer. Review for vulnerabilities." --output-format json。--allowedTools "Bash(git diff *),Bash(git log *),Bash(git status *),Bash(git commit *)" 只放行指定的 git 子命令。--output-format stream-json --verbose --include-partial-messages,最后一行是含最终文本、成本和会话 metadata 的 result 消息。--permission-mode auto --permission-prompts none,任何会弹提示的请求被拒绝,且告知 Claude 不要重试。--output-format json | jq -r '.session_id' 取 session ID,再 --resume "$session_id" 续接。--allowedTools 的空格:官方明确说明 Bash(git diff *) 里 * 前的空格很重要,写成 Bash(git diff*) 会同时匹配 git diff-index。--continue 与 -p 会话:官方 CLI 参考说明,不带 -p 的 --continue 会跳过由 claude -p 或 Agent SDK 创建的会话;claude -p --continue 才包含它们。--json-schema 无效时:会报 Error: --json-schema is not a valid JSON Schema。官方说明 v2.1.205 之前会静默忽略无效 schema 并返回非结构化文本。total_cost_usd 是客户端估算,不能当作账单依据。--max-turns 触顶是报错退出(官方 CLI 参考:Exits with an error when the limit is reached),脚本需要处理这种情况。docs.claude.com/en/docs/claude-code/cli-reference 会 301 跳转到此地址)第三方提供商下未指定权限模式时,claude -p 与 Agent SDK 会话默认以 default 模式启动。
设置文件校验失败时,文本输出模式现在会在 stderr 列出该文件和无效条目。
当 stderr 为终端时,`claude -p` 在最后一轮结束后仍保持打开,会在 stderr 输出一行说明正在等待什么。
修复后台工作启动新一轮时 `claude -p` 文本输出丢失前面响应的问题,现在每轮结束时打印该轮响应。
改进了 `claude -p` 启动性能,第一轮不再等待 HTTP 和 SSE MCP 服务器回复
修复了管道或重定向输入时挂起和崩溃的问题
修复了与 CLAUDE_CODE_FORK_SUBAGENT=1 的兼容性,使 subagent 的 Agent 调用在前台运行
改变了 claude -p 在第三方提供商或禁用遥测时的行为,未配置权限模式时现启动自动模式
修改为不加载交互式 UI,改进了启动性能
修复了非交互式会话在启动目录被删除后失败的问题
改变 effort level 处理不再继承已保存值到新 model
改进了会话启动性能,SDK 和 headless 模式不再等待 CLAUDE.md 查询,移除了后台标题请求。
修复了 Agent SDK 会话可能挂起导致无结果返回的问题。
修复本地 `claude -p --resume` 不报告后台任务的问题
修复 headless 模式下策略助手警告不打印的问题
修复 print-mode (`-p`) 会话以交互模式恢复时系统提示前缀改变导致的 prompt-cache break 问题
修复非交互式会话中 cd 命令不能在轮次间保留的问题
修复 -p 非交互模式下远程管理设置被永久记录为已同意的问题
修复 Windows 上 claude -p 等待斜杠命令/skill 扫描时速度缓慢或无响应的问题
修复后台命令永不退出时 -p 无限挂起的问题
修复 -p 在 CI=true 且无 Anthropic API key 时在 Bedrock/Vertex/Foundry 失败的问题
修复与 --output-format 一起使用时后台子智能体输出损坏 stdout 的问题
改进 `-p` flag 与 `--resume` 搭配时接受通过 `/rename` 或 `--name` 设置的会话标题
修复 `claude --continue -p` 无法正确继续通过 `-p` 创建的会话的问题
修复延迟工具输入超过 64KB 时 -p --resume 挂起的问题
修复了作为subprocess生成且无explicit stdin时hanging的问题
修复了条件 CLAUDE.md 文件在 print mode (`claude -p`) 中无法加载的问题。
改进了 MCP `-p` 启动通过流水线处理 claude.ai config 获取和本地连接。
修复非交互模式下的结构化输出
修复 MCP servers 在 non-interactive mode 时卡在 pending state
修复了 -p 模式下 @ 提及的文件需要重新读取后才能写入的 bug
-p mode 现在会输出子任务的消息
修复 thinking 在 -p 模式下不工作的 bug
修复非交互式模式的问题