Warp Agent CLI:把 agent 搬进任意终端,但 auto-approve 会绕过你自己的 command denylist
Warp Agent CLI 是把 Warp App 里的 Warp Agent 搬到任意终端的命令行程序。跑 warp 就开一个 agent 会话,可以用自然语言下提示、审阅并批准它的动作,也能在同一个输入框里跑 shell 命令,不需要改终端配置。
- 文档:
- 快速开始:
- 权限与 profiles:
它是什么
CLI 是一个独立终端程序,跑的是和 Warp App 同一个 agent harness。它本身也是原生终端复用器:自己创建并维护一个 pseudoterminal(PTY),让你和 agent 在同一终端里执行命令、交互运行中的进程,包括处理提示符和全屏终端程序。因为它就是个普通命令行程序,任何终端模拟器都能用,SSH 里也行。
主要能力:
- Agent 会话:滚动 transcript、流式响应、Markdown 渲染、文件编辑 diff、工具调用、计划与任务列表。
- Shell 命令:与 agent 提示共用同一个输入框,长时运行和交互式的都能跑。
- 权限与 profiles:用内联权限卡片批准命令与文件编辑,或配置 execution profiles 与 auto-approve。
- 持久会话:会话保存到 Warp 账号,可退出后恢复或在多个会话间切换。
- 云端交接与编排:把会话交接给 cloud agent,在 CLI 里继续云端运行,协调多个 agent。
- 项目上下文:自动拾取项目规则(如
AGENTS.md)、skills、MCP servers。 - 模型选择:每个会话单独选模型,可自带 provider API key,可看额度用量。
- 定制:通过本地 settings 文件配置主题、statusline、启动屏。
CLI 跑与 Warp App 相同的 harness,所以账号、套餐、模型访问、rules、skills 一致;CLI 不要求安装 Warp App。CLI 连的是同一套 Automation Platform,会话同步到 Warp 账号,可以把工作交给 cloud agents,或在终端里继续云端运行。
几个斜杠命令:/status 打开只读面板(已装版本、当前会话名与 ID、工作目录、登录组织与邮箱),报问题时带上这些信息;/upgrade 打开升级页;/manage-billing 打开团队计费页(仅对管理计费者显示)。
从 Warp App 迁移
rules 与 skills 从相同的共享路径发现,保存的 Warp Drive prompts 登录后可用(其他 Warp Drive 对象类型在 CLI 不可用)。复制兼容设置与全局 MCP server 配置,运行内置 /tui-migrate-setup skill 并按其指示操作。凭据永不复制,需要认证的 MCP server 必须在 CLI 里重新认证。
安装
前置:Warp 账号(登录时开浏览器,可用 注册;用与 App 相同账号,但不要求装 App)。支持平台:macOS(Apple Silicon 或 Intel)、Linux(x64 或 Arm64)、Windows(x64 或 Arm64)。
macOS / Linux 安装脚本(推荐,也是唯一能自我更新的方式):
curl -fsSL https://app.warp.dev/download/agent-cli | bash
Windows PowerShell:
Invoke-RestMethod "https://app.warp.dev/download/agent-cli.ps1" | Invoke-Expression
Homebrew(macOS 14+ 与 Linux),cask 在主 cask 仓库,无需先 tap:
brew install --cask warp-agent-cli
注意 Homebrew 安装不会自我更新,需要自己 brew upgrade --cask warp-agent-cli。
验证:
warp --version
脚本安装会自更新:运行时周期性检查新版本、后台下载并暂存,不打断会话;暂存版本下次启动 warp 生效,启动屏会在版本旁显示 "update installed, restart to apply"。要关掉更新检查,在 settings 文件里设 general.autoupdate_enabled = false;单次启动关闭则设环境变量 WARP_TUI_DISABLE_AUTOUPDATE 为任意值。
登录与无头环境
启动 warp,会显示验证链接与设备码并打开浏览器;在浏览器批准后 CLI 自动解锁,无需重启。若浏览器没打开,访问链接并输入码。登录后显示启动屏:版本、What's new,以及为当前目录发现的 rules/skills/MCP servers。会话间保持登录,/logout 退出。
CI 或无头环境用 Warp API key,设置环境变量 WARP_API_KEY:
WARP_API_KEY=YOUR_API_KEY warp
也可以传 --api-key,但优先用环境变量——命令行参数可能被 shell history 与进程列表捕获。
第一个提示与 shell 命令
输入自然语言如 "What does this project do?" 回车。若 agent 想跑命令或改文件,会弹权限请求,选批准或拒绝。
在空输入下输入 ! 进入 shell mode,footer 显示 Shell mode;输入如 git status 回车。空输入按 Backspace 回到 agent 提示。想让无 ! 前缀的 shell 命令也被识别,运行 /natural-language-detection 打开自然语言检测:CLI 边输入边分类,识别为命令的切到 shell mode,自然语言提示留在 Agent Mode;提示符标记和 statusline 会在回车前显示当前模式。
退出与恢复:连续按两次 Ctrl+C 退出,或 /exit。单次 Ctrl+C 停止 agent 当前响应,无运行时则清空输入。退出时 CLI 打印恢复命令:
warp --resume CONVERSATION_TOKEN
权限模型
CLI 与 Warp App 同一套权限模型。每个动作类型独立设为 always_ask、always_allow、agent_decides。
默认值:Shell 命令、文件编辑、文件读取、MCP 工具调用 = agent_decides(文件编辑即便 agent_decides 也每次提示,所以编辑前总能审阅 diff);向运行中的命令输入、启动子 agent = 总是询问。command denylist 压在这些值之上:命中的命令即便 execute_commands=always_allow 也需批准。
批准交互:权限卡片显示拟执行的命令或文件编辑。除批准/拒绝外,可选 Other 用文字给指示,agent 据此调整;在命令卡片按 E 可在批准前编辑(Esc 退出编辑但不拒绝请求);在文件编辑卡片按 E 展开/收起所有 diff。
权限值语义:
agent_decides:有把握时自主,不确定时询问。always_ask:每次都批准。always_allow:无需提示直接运行。
auto-approve 的坑
auto-approve 给予完全自主:动作立即执行、无权限卡片,直到任务完成或你关掉。用 /auto-approve 或 Ctrl+Shift+I 切换。它仅作用于单个会话,新会话默认关闭。要每个新会话默认开,用 warp --auto-approve 启动。statusline 的 ▶▶ 指示当前状态。若 profile 设了 ask_user_question="ask_except_in_auto_approve",auto-approve 期间 agent 也跳过澄清提问。
⚠ 坑在这里:auto-approve 开启时,agent 无审阅地跑命令与应用文件编辑,包括命中你自己 command denylist 的命令。要在 auto-approve 下仍让 denylist 生效,需在 settings 文件关掉 bypass:
[agents.warp_agent.other]
auto_approve_bypasses_command_denylist = false
团队在 Admin Panel 强制执行的 denylist 规则永远需要批准、从不被绕过,与该设置无关。
Execution profiles
权限来自 settings 文件里的 execution profiles,位于 agents.execution_profiles 表;CLI 始终用保留键 default 的 profile:
[agents.execution_profiles.default]
name = "Default"
execute_commands = "agent_decides"
apply_code_diffs = "agent_decides"
read_files = "agent_decides"
command_allowlist = ['cargo (build|check|test)(\s.*)?']
⚠ 设置 command_denylist 会替换内置默认 denylist(默认覆盖 rm、curl、wget、eval、ssh、shells 等危险命令模式)。省略该字段则保留默认。要新增拒绝,应在生成的列表上扩展,而不是从零写一个短列表。
可直接编辑文件,也可让 agent 改自己的权限(它会更新 settings 文件),CLI 自动拾取改动。CLI 的 profiles 是本机本地的,从不同步到云,也区别于 Warp App 里的 Agent Profiles。可定义额外 profiles,但 CLI 当前始终用 default。
Profile 字段:
execute_commands:跑 shell 命令apply_code_diffs:应用文件编辑read_files:读文件mcp_permissions:调 MCP serverswrite_to_pty:向运行中的交互命令输入,也接受ask_on_first_writeask_user_question:always_ask/ask_except_in_auto_approve/neverrun_agents:启动子 agent,always_ask/always_allow/never_allowcommand_allowlist:无需批准的正则command_denylist:无论其他权限值都需批准的正则directory_allowlist:无需批准可读的目录
profiles 还含 base_model 等模型覆盖。
校验:整个 profile 集合作为整体校验;任一 profile 含无效值,CLI 运行时保持上一个有效配置,下次启动回退到内置默认 profile,直到文件修好。
Warp 现为开源,由 Oz(其 cloud agent 编排平台)以 agent-first 工作流管理社区共建。