参数、斜杠命令与权限
Cursor CLI 的全局选项、子命令、交互斜杠命令,Shell/Read/Write/WebFetch/Mcp 权限令牌与 cli-config.json 配置文件。
全局选项
| 选项 | 说明 |
|---|---|
-v, --version | 输出版本号 |
--api-key <key> | 认证用的 API Key(也可以用 CURSOR_API_KEY 环境变量) |
-H, --header <header> | 给智能体请求添加自定义头(格式 Name: Value,可多次使用) |
-p, --print | 把回复打印到控制台(用于脚本或非交互),可使用所有工具,包括写入和 shell |
--output-format <format> | 输出格式(只配合 --print):text、json 或 stream-json(默认 text) |
--resume [chatId] | 恢复聊天会话 |
--continue | 继续上一次会话(--resume=-1 的别名) |
--model <model> | 使用的模型 |
--mode <mode> | 设置智能体模式:plan 或 ask(未指定模式时默认是 agent) |
--plan | 以 plan 模式启动(--mode=plan 的简写) |
--list-models | 列出所有可用模型 |
-f, --force / --yolo | 强制允许命令,除非被显式拒绝 |
--sandbox <mode> | 设置沙箱模式:enabled 或 disabled |
--approve-mcps | 自动批准所有 MCP 服务器 |
--trust | 不提示就信任工作区(仅无头模式) |
--workspace <path> | 使用的工作区目录 |
--plugin-dir <path> | 加载本地插件目录(可多次指定) |
-w, --worktree [name] | 在 ~/.cursor/worktrees/<reponame>/<name> 下的新 Git worktree 里运行;省略则自动生成名字 |
--worktree-base <branch> | 新 worktree 所基于的分支或 ref(默认当前 HEAD) |
--skip-worktree-setup | 跳过 .cursor/worktrees.json 里的 worktree 设置脚本 |
子命令
| 命令 | 说明 |
|---|---|
agent [prompt...] | 以 agent 模式启动(默认) |
login / logout | 向 Cursor 认证 / 登出并清除已存储的认证 |
status / whoami | 查看认证状态 |
about | 显示版本、系统和账号信息 |
models | 列出此账号的可用模型 |
mcp | 管理 MCP 服务器 |
worker | 启动运行在你环境里的私有云端 worker(如 agent worker start) |
update | 更新 Cursor Agent 到最新版本 |
ls / resume | 恢复聊天会话 / 恢复最近的聊天会话 |
create-chat | 创建新的空聊天并返回其 ID |
generate-rule / rule | 用交互式提示生成新的 Cursor 规则 |
install-shell-integration / uninstall-shell-integration | 把 shell 集成安装到 ~/.zshrc / 移除 |
斜杠命令
| 命令 | 说明 |
|---|---|
/model [filter] | 选择模型(按 Tab 编辑) |
/run-everything [on|off|status] | 切换 Run Everything 或显示其状态(/auto-run 是别名) |
/plan [prompt] | 切换到 Plan mode、显示当前计划,或在 Plan mode 下提交提示 |
/ask | 切换只读问题的 Ask mode |
/debug [prompt] | 切换 Debug mode 或在 Debug mode 下提交提示 |
/goal [objective] | 给智能体一个长期目标,直到完全完成(逐步推出中) |
/logs | 显示调试日志路径并复制到剪贴板 |
/update | 更新 Cursor Agent 到最新版本 |
/rename <name> | 重命名当前聊天会话 |
/clear | 开始新聊天会话(/new、/new-chat、/newchat 是别名) |
/resume | 打开最近的聊天并恢复其中一个 |
/fork | 把当前聊天分叉为新会话 |
/summarize | 总结对话以减少上下文(/compress 是别名) |
/rewind | 跳回之前的消息 |
/vim | 切换 Vim 键位 |
/shell [command] | 进入 Shell Mode(/sh、/run 是别名) |
/mcp [list|list-tools] [identifier] | 管理 MCP 服务器并列出某个服务器的工具 |
/plugin [subcommand] | 管理插件和市场 |
/config | 交互式配置 CLI 设置 |
/sandbox | 配置沙箱模式和网络访问设置 |
/setup-terminal | 配置终端换行键位绑定 |
/help [command] | 显示帮助 |
/quit、/exit | 退出 |
权限
在 CLI 配置里用权限令牌配置智能体被允许做什么。权限设置在 ~/.cursor/cli-config.json(全局)或 <项目>/.cursor/cli.json(项目特定)里。权限类型:
| 类型 | 格式 | 示例 |
|---|---|---|
| Shell 命令 | Shell(commandBase),commandBase 是命令行的第一个 token,支持 glob 和可选的 command:args 语法 | Shell(ls)、Shell(git)、Shell(curl:*)、Shell(rm)(常放 deny) |
| 文件读取 | Read(pathOrGlob) | Read(src/**/*.ts)、Read(.env*)(拒绝读环境文件) |
| 文件写入 | Write(pathOrGlob) | Write(src/**)、Write(**/*.key)(拒绝写私钥文件) |
| 网络获取 | WebFetch(domainOrPattern) | WebFetch(docs.github.com)、WebFetch(*.example.com)、WebFetch(*)(谨慎使用) |
| MCP 工具 | Mcp(server:tool),server 来自 mcp.json,可用 * 通配 | Mcp(datadog:*)、Mcp(*:search) |
没有 allowlist 条目时,每次网络获取都会提示批准。示例配置:
{
"permissions": {
"allow": [
"Shell(ls)",
"Shell(git)",
"Read(src/**/*.ts)",
"Write(package.json)",
"WebFetch(docs.github.com)",
"Mcp(datadog:*)"
],
"deny": [
"Shell(rm)",
"Read(.env*)",
"Write(**/*.key)"
]
}
}匹配规则:glob 模式用 **、*、? 通配符;相对路径限定在当前工作区;绝对路径可以指向项目之外的文件;deny 规则优先于 allow 规则;用 command:args(如 curl:*)用 glob 同时匹配命令和参数。
配置文件
用 cli-config.json 配置 Agent CLI:全局文件在 macOS/Linux 的 ~/.cursor/cli-config.json(Windows 的 $env:USERPROFILE\.cursor\cli-config.json),项目文件在 <项目>/.cursor/cli.json。项目级只能配置权限,其他所有 CLI 设置必须全局设置;可用环境变量覆盖:CURSOR_CONFIG_DIR(自定义目录路径)、XDG_CONFIG_HOME(Linux/BSD)。必填字段:version(配置 schema 版本,当前为 1)、editor.vimMode(启用 Vim 键位,默认 false)、permissions.allow、permissions.deny。可选字段包括:channel(CLI 更新使用的发布渠道)、model、notifications(智能体完成或需要输入时发终端通知)、hints、rewind(启用 /rewind)、suggestNextPrompt、display.*(显示行号、思考块、状态指示等)、approvalMode(allowlist、auto-review 或 unrestricted)、sandbox.mode 和 sandbox.networkAccess、attribution.attributeCommitsToAgent 与 attribution.attributePRsToAgent(给智能体的提交和 PR 添加「Made with Cursor」署名,默认 true)。最小配置:
{
"version": 1,
"editor": { "vimMode": false },
"permissions": { "allow": ["Shell(ls)"], "deny": [] }
}