Claude Code Headless Mode

解释 Claude Code headless / non-interactive 运行方式,包括 -p、JSON 输出、权限、凭据、CI 工作流和安全边界。

Headless mode 指不通过普通交互聊天运行 Claude Code。最常见形式是 print mode:

claude -p "summarize the current diff"

它适合脚本、CI 检查、结构化输出和可重复自动化,但不适合无控制地让 agent 循环执行。

最后核查:2026 年 5 月 24 日。CLI flags 和自动化行为可能变化,生产 CI 前请核对当前 CLI reference。

短答案

一次性自动化用 claude -p。进入 CI 前,一定要明确输出格式、权限、凭据和失败处理。

常用参数

参数用途
-p, --print非交互运行一个 prompt 并输出结果。
--output-format text人读输出。
--output-format json单次机器可读输出。
--output-format stream-json流式机器可读事件。
--permission-mode plan只分析,不编辑源码。
--allowedTools给非交互任务预批准特定工具。
--disallowedTools拒绝工具或危险工具模式。
--bare跳过 hooks、skills、plugins、MCP、auto memory 和 CLAUDE.md 等自动发现。
--fallback-modelprint 或 background run 中默认模型不可用时使用备用模型。

适合场景

  • PR diff 摘要。
  • 根据 commits 生成 release notes。
  • 检查迁移计划是否触碰禁区。
  • 给内部 review pipeline 产出 JSON。
  • 只读仓库审计。

风险场景

  • CI 中给写权限但没有 review。
  • 同时开放 MCP、生产凭据和宽权限。
  • 失败后无限 retry。
  • 混淆订阅 OAuth 和 API key 计费。
  • 对不可信 PR 运行强权限工具。

更安全的 CI 形态

claude -p "Review this diff for risky changes. Do not edit files." \
  --permission-mode plan \
  --output-format json \
  --allowedTools "Read" "Grep" "Glob"

脚本里要明确认证方式。ANTHROPIC_API_KEYANTHROPIC_AUTH_TOKEN、云厂商变量和 OAuth token 都会影响授权和计费。

什么时候用 Agent SDK

如果你需要长生命周期进程、结构化 session、自定义工具编排、审批流或产品化服务边界,用 Agent SDK。只是一个 shell 任务时,claude -p 就够了。

相关页面

官方来源