6.19 --dangerously-skip-permissions - 跳过权限提示

第 6 章 · CLI 标志说明 · 第2部分:命令参考

概述#

--dangerously-skip-permissions 标志允许您跳过所有权限提示,自动批准所有工具调用。这是一个危险的操作,只应该在完全信任的环境中使用。

基本语法#

bash
复制
claude --dangerously-skip-permissions

⚠️ 安全警告#

重要提示: 此标志会跳过所有权限检查,可能导致以下风险:

  • 意外删除或修改重要文件
  • 执行危险的系统命令
  • 泄露敏感信息
  • 造成不可逆的系统损坏 仅在以下情况下使用:
  • 完全信任的环境(本地开发)
  • 测试环境
  • 自动化脚本(经过充分测试)

使用场景#

1. 本地开发环境#

bash
复制
# 在完全信任的本地开发环境中claude --dangerously-skip-permissions -p "生成并保存代码" # 所有操作都会自动批准

2. 自动化脚本#

bash
复制
#!/bin/bash# automated-script.sh# 在充分测试的自动化脚本中claude --dangerously-skip-permissions -p "执行自动化任务"# 确保脚本不会中断

3. 沙箱环境#

bash
复制
# 在隔离的沙箱环境中claude --dangerously-skip-permissions -p "测试功能" # 即使出错也不会影响生产环境

4. 快速原型开发#

bash
复制
# 快速原型开发,需要频繁操作claude --dangerously-skip-permissions -p "创建原型"# 提高开发效率

高级用法#

1. 与其他标志组合#

bash
复制
# 跳过权限 + 限制工具claude --dangerously-skip-permissions --allowedTools "Read""Grep" -p "分析代码" # 跳过权限 + 指定模型claude --dangerously-skip-permissions --model opus -p "生成代码" # 跳过权限 + 自定义系统提示claude --dangerously-skip-permissions --system-prompt "你是一位 Python 专家" -p "编写代码"

2. 环境检查#

bash
复制
#!/bin/bash# safe-skip-permissions.sh# 检查环境if["$ENV"!="development"];thenecho"错误:只能在开发环境中使用 --dangerously-skip-permissions"exit1fi# 检查工作目录if[["$(pwd)"!= /safe/development/* ]];thenecho"错误:只能在安全目录中使用 --dangerously-skip-permissions"exit1fi# 安全使用claude --dangerously-skip-permissions -p "完成任务"

3. 备份保护#

bash
复制
#!/bin/bash# backup-protected-skip.sh # 创建备份BACKUP_DIR="backups/$(date +%Y%m%d-%H%M%S)"mkdir -p "$BACKUP_DIR"cp -r ."$BACKUP_DIR/" echo"备份已创建: $BACKUP_DIR" # 跳过权限claude --dangerously-skip-permissions -p "执行任务" echo"任务完成,备份保留在 $BACKUP_DIR"

4. 时间限制#

bash
复制
#!/bin/bash# time-limited-skip.shTIMEOUT=300# 5 分钟# 使用 timeout 限制执行时间timeout"$TIMEOUT" claude --dangerously-skip-permissions -p "执行任务"if[$? -eq 124];thenecho"任务超时,已自动终止"elseecho"任务完成"fi

实际应用示例#

示例 1: 本地开发脚本#

bash
复制
#!/bin/bash# local-dev-script.sh # 确保是本地开发环境if["$ENV"!="local"];thenecho"错误:只能在本地环境中运行此脚本"exit1fi # 确保工作目录安全if[["$(pwd)"!= ~/dev/* ]];thenecho"错误:只能在 ~/dev/ 目录下运行此脚本"exit1fi # 创建备份BACKUP_DIR="backups/$(date +%Y%m%d-%H%M%S)"mkdir -p "$BACKUP_DIR"cp -r ."$BACKUP_DIR/" echo"开始本地开发..."claude --dangerously-skip-permissions -p "开发功能" echo"开发完成,备份保留在 $BACKUP_DIR"

示例 2: 测试环境自动化#

bash
复制
#!/bin/bash# test-automation.sh# 确保是测试环境if["$ENV"!="test"];thenecho"错误:只能在测试环境中运行此脚本"exit1fi# 使用测试数据库exportDB_URL="test-db.example.com"# 运行自动化测试claude --dangerously-skip-permissions -p "运行自动化测试"echo"测试完成"

示例 3: 沙箱环境实验#

bash
复制
#!/bin/bash# sandbox-experiment.sh # 确保是沙箱环境if["$ENV"!="sandbox"];thenecho"错误:只能在沙箱环境中运行此脚本"exit1fi # 使用隔离的容器docker run --rm -v "$(pwd):/workspace" sandbox-image \ claude --dangerously-skip-permissions -p "实验功能" echo"实验完成"

示例 4: 快速原型开发#

bash
复制
#!/bin/bash# quick-prototype.sh# 创建临时目录TEMP_DIR="tmp/prototype-$(date +%Y%m%d-%H%M%S)"mkdir -p "$TEMP_DIR"cd"$TEMP_DIR"echo"在临时目录中开发原型: $TEMP_DIR"# 快速开发原型claude --dangerously-skip-permissions -p "创建快速原型"echo"原型开发完成,位于 $TEMP_DIR"

安全最佳实践#

1. 环境验证#

bash
复制
#!/bin/bash# verify-environment.sh # 验证环境if["$ENV"!="development"]&&["$ENV"!="test"];thenecho"错误:不允许在生产环境中使用 --dangerously-skip-permissions"exit1fi # 验证工作目录SAFE_DIRS=("~/dev""~/test""/tmp")SAFE=false fordirin"${SAFE_DIRS[@]}";doif[["$(pwd)"==$dir/* ]];thenSAFE=true breakfidone if["$SAFE"=false];thenecho"错误:不在安全目录中"exit1fi # 安全使用claude --dangerously-skip-permissions -p "完成任务"

2. 备份策略#

bash
复制
#!/bin/bash# backup-strategy.sh# 创建备份BACKUP_DIR="backups/$(date +%Y%m%d-%H%M%S)"mkdir -p "$BACKUP_DIR"cp -r ."$BACKUP_DIR/"echo"备份已创建: $BACKUP_DIR"# 执行任务claude --dangerously-skip-permissions -p "执行任务"# 询问是否保留备份echo"任务完成,是否保留备份?(y/n)"read answer if["$answer"!="y"];thenrm -rf "$BACKUP_DIR"echo"备份已删除"fi

3. 权限限制#

bash
复制
#!/bin/bash# permission-limits.sh # 限制可用的工具claude \ --dangerously-skip-permissions \ --allowedTools "Read""Write""Grep"\ --disallowedTools "RunCommand"\ -p "完成任务"

4. 日志记录#

bash
复制
#!/bin/bash# log-operations.shLOG_FILE="operations-$(date +%Y%m%d-%H%M%S).log"# 记录所有操作claude --dangerously-skip-permissions -p "执行任务"2>&1|tee"$LOG_FILE"echo"操作已记录到 $LOG_FILE"

风险缓解策略#

1. 使用容器隔离#

bash
复制
#!/bin/bash# container-isolation.sh # 在容器中运行docker run --rm -v "$(pwd):/workspace" -w /workspace \ claude-image \ claude --dangerously-skip-permissions -p "执行任务"

2. 使用虚拟环境#

bash
复制
#!/bin/bash# virtual-environment.sh# 使用虚拟环境python -m venv venv source venv/bin/activate # 在虚拟环境中执行claude --dangerously-skip-permissions -p "执行任务"

3. 使用只读文件系统#

bash
复制
#!/bin/bash# readonly-filesystem.sh # 挂载只读文件系统docker run --rm -v "$(pwd):/workspace:ro"\ claude-image \ claude --dangerously-skip-permissions -p "分析代码"

4. 使用网络隔离#

bash
复制
#!/bin/bash# network-isolation.sh# 使用网络隔离docker run --rm --network none -v "$(pwd):/workspace"\ claude-image \ claude --dangerously-skip-permissions -p "执行任务"

常见问题#

Q1: 什么时候可以使用 --dangerously-skip-permissions?#

A: 只在完全信任的环境中使用,如本地开发、测试环境或沙箱环境。

Q2: 使用此标志有什么风险?#

A: 可能导致意外删除或修改文件、执行危险命令、泄露敏感信息等。

Q3: 如何安全地使用此标志?#

A: 在安全的环境中、创建备份、限制工具、使用容器隔离等。

Q4: 可以在生产环境中使用吗?#

A: 绝对不可以。生产环境中永远不要使用此标志。

Q5: 如何验证环境是否安全?#

A: 检查环境变量、工作目录、网络隔离等。

与其他标志的组合示例#

1. 安全的自动化流程#

bash
复制
#!/bin/bash# safe-automation.sh # 验证环境if["$ENV"!="test"];thenexit1fi # 限制工具claude \ --dangerously-skip-permissions \ --allowedTools "Read""Write""Grep"\ -p "执行任务"

2. 备份保护的流程#

bash
复制
#!/bin/bash# backup-protected-flow.sh# 创建备份BACKUP_DIR="backups/$(date +%Y%m%d-%H%M%S)"mkdir -p "$BACKUP_DIR"cp -r ."$BACKUP_DIR/"# 执行任务claude --dangerously-skip-permissions -p "执行任务"echo"备份保留在 $BACKUP_DIR"

3. 容器隔离的流程#

bash
复制
#!/bin/bash# container-isolated-flow.sh # 在容器中运行docker run --rm -v "$(pwd):/workspace" -w /workspace \ claude-image \ claude --dangerously-skip-permissions -p "执行任务"

总结#

--dangerously-skip-permissions 标志提供了一种跳过所有权限检查的方式。这是一个危险的标志,只应该在完全信任的环境中使用。

使用此标志时,请务必:

  • 确保环境安全(本地开发、测试环境、沙箱环境)
  • 创建备份
  • 限制可用工具
  • 使用容器隔离
  • 记录所有操作

永远不要在生产环境中使用此标志。

合理使用 --dangerously-skip-permissions 可以提高自动化脚本的效率,但必须严格遵循安全最佳实践。