6.19 --dangerously-skip-permissions - 跳過許可權提示
概述
--dangerously-skip-permissions 標誌允許您跳過所有許可權提示,自動批准所有工具呼叫。這是一個危險的操作,只應該在完全信任的環境中使用。
基本语法
bash
claude --dangerously-skip-permissions1
⚠️ 安全警告
重要提示: 此標誌會跳過所有許可權檢查,可能導致以下風險:
- 意外刪除或修改重要檔案
- 執行危險的系統命令
- 洩露敏感資訊
- 造成不可逆的系統損壞 僅在以下情況下使用:
- 完全信任的環境(本地開發)
- 測試環境
- 自動化指令碼(經過充分測試)
使用场景
1. 本地开发环境
bash
# 在完全信任的本地开发环境中
claude --dangerously-skip-permissions -p "生成并保存代码"
# 所有操作都会自动批准1
2
3
4
2
3
4
2. 自动化脚本
bash
#!/bin/bash
# automated-script.sh
# 在充分测试的自动化脚本中
claude --dangerously-skip-permissions -p "执行自动化任务"
# 确保脚本不会中断1
2
3
4
5
2
3
4
5
3. 沙箱环境
bash
# 在隔离的沙箱环境中
claude --dangerously-skip-permissions -p "测试功能"
# 即使出错也不会影响生产环境1
2
3
4
2
3
4
4. 快速原型开发
bash
# 快速原型开发,需要频繁操作
claude --dangerously-skip-permissions -p "创建原型"
# 提高开发效率1
2
3
2
3
高级用法
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 "编写代码"1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
2. 环境检查
bash
#!/bin/bash
# safe-skip-permissions.sh
# 检查环境
if [ "$ENV" != "development" ]; then
echo "错误:只能在开发环境中使用 --dangerously-skip-permissions"
exit 1
fi
# 检查工作目录
if [[ "$(pwd)" != /safe/development/* ]]; then
echo "错误:只能在安全目录中使用 --dangerously-skip-permissions"
exit 1
fi
# 安全使用
claude --dangerously-skip-permissions -p "完成任务"1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
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"1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
4. 时间限制
bash
#!/bin/bash
# time-limited-skip.sh
TIMEOUT=300 # 5 分钟
# 使用 timeout 限制执行时间
timeout "$TIMEOUT" claude --dangerously-skip-permissions -p "执行任务"
if [ $? -eq 124 ]; then
echo "任务超时,已自动终止"
else
echo "任务完成"
fi1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
实际应用示例
示例 1: 本地开发脚本
bash
#!/bin/bash
# local-dev-script.sh
# 确保是本地开发环境
if [ "$ENV" != "local" ]; then
echo "错误:只能在本地环境中运行此脚本"
exit 1
fi
# 确保工作目录安全
if [[ "$(pwd)" != ~/dev/* ]]; then
echo "错误:只能在 ~/dev/ 目录下运行此脚本"
exit 1
fi
# 创建备份
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"1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
示例 2: 测试环境自动化
bash
#!/bin/bash
# test-automation.sh
# 确保是测试环境
if [ "$ENV" != "test" ]; then
echo "错误:只能在测试环境中运行此脚本"
exit 1
fi
# 使用测试数据库
export DB_URL="test-db.example.com"
# 运行自动化测试
claude --dangerously-skip-permissions -p "运行自动化测试"
echo "测试完成"1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
示例 3: 沙箱环境实验
bash
#!/bin/bash
# sandbox-experiment.sh
# 确保是沙箱环境
if [ "$ENV" != "sandbox" ]; then
echo "错误:只能在沙箱环境中运行此脚本"
exit 1
fi
# 使用隔离的容器
docker run --rm -v "$(pwd):/workspace" sandbox-image \
claude --dangerously-skip-permissions -p "实验功能"
echo "实验完成"1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
示例 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
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
安全最佳实践
1. 环境验证
bash
#!/bin/bash
# verify-environment.sh
# 验证环境
if [ "$ENV" != "development" ] && [ "$ENV" != "test" ]; then
echo "错误:不允许在生产环境中使用 --dangerously-skip-permissions"
exit 1
fi
# 验证工作目录
SAFE_DIRS=("~/dev" "~/test" "/tmp")
SAFE=false
for dir in "${SAFE_DIRS[@]}"; do
if [[ "$(pwd)" == $dir/* ]]; then
SAFE=true
break
fi
done
if [ "$SAFE" = false ]; then
echo "错误:不在安全目录中"
exit 1
fi
# 安全使用
claude --dangerously-skip-permissions -p "完成任务"1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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" ]; then
rm -rf "$BACKUP_DIR"
echo "备份已删除"
fi1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
3. 权限限制
bash
#!/bin/bash
# permission-limits.sh
# 限制可用的工具
claude \
--dangerously-skip-permissions \
--allowedTools "Read" "Write" "Grep" \
--disallowedTools "RunCommand" \
-p "完成任务"1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
4. 日志记录
bash
#!/bin/bash
# log-operations.sh
LOG_FILE="operations-$(date +%Y%m%d-%H%M%S).log"
# 记录所有操作
claude --dangerously-skip-permissions -p "执行任务" 2>&1 | tee "$LOG_FILE"
echo "操作已记录到 $LOG_FILE"1
2
3
4
5
6
2
3
4
5
6
风险缓解策略
1. 使用容器隔离
bash
#!/bin/bash
# container-isolation.sh
# 在容器中运行
docker run --rm -v "$(pwd):/workspace" -w /workspace \
claude-image \
claude --dangerously-skip-permissions -p "执行任务"1
2
3
4
5
6
7
2
3
4
5
6
7
2. 使用虚拟环境
bash
#!/bin/bash
# virtual-environment.sh
# 使用虚拟环境
python -m venv venv
source venv/bin/activate
# 在虚拟环境中执行
claude --dangerously-skip-permissions -p "执行任务"1
2
3
4
5
6
7
2
3
4
5
6
7
3. 使用只读文件系统
bash
#!/bin/bash
# readonly-filesystem.sh
# 挂载只读文件系统
docker run --rm -v "$(pwd):/workspace:ro" \
claude-image \
claude --dangerously-skip-permissions -p "分析代码"1
2
3
4
5
6
7
2
3
4
5
6
7
4. 使用网络隔离
bash
#!/bin/bash
# network-isolation.sh
# 使用网络隔离
docker run --rm --network none -v "$(pwd):/workspace" \
claude-image \
claude --dangerously-skip-permissions -p "执行任务"1
2
3
4
5
6
2
3
4
5
6
常见问题
Q1: 什么时候可以使用 --dangerously-skip-permissions?
A: 只在完全信任的环境中使用,如本地开发、测试环境或沙箱环境。
Q2: 使用此标志有什么风险?
A: 可能导致意外删除或修改文件、执行危险命令、泄露敏感信息等。
Q3: 如何安全地使用此标志?
A: 在安全的环境中、创建备份、限制工具、使用容器隔离等。
Q4: 可以在生产环境中使用吗?
A: 绝对不可以。生产环境中永远不要使用此标志。
Q5: 如何验证环境是否安全?
A: 检查环境变量、工作目录、网络隔离等。
与其他标志的组合示例
1. 安全的自动化流程
bash
#!/bin/bash
# safe-automation.sh
# 验证环境
if [ "$ENV" != "test" ]; then
exit 1
fi
# 限制工具
claude \
--dangerously-skip-permissions \
--allowedTools "Read" "Write" "Grep" \
-p "执行任务"1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
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"1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
3. 容器隔离的流程
bash
#!/bin/bash
# container-isolated-flow.sh
# 在容器中运行
docker run --rm -v "$(pwd):/workspace" -w /workspace \
claude-image \
claude --dangerously-skip-permissions -p "执行任务"1
2
3
4
5
6
7
2
3
4
5
6
7
总结
`--dangerously-skip-permissions` 標誌提供了一種跳過所有許可權檢查的方式。**這是一個危險的標誌,只應該在完全信任的環境中使用。**
**使用此標誌時,請務必:**
* 確保環境安全(本地開發、測試環境、沙箱環境)
* 建立備份
* 限制可用工具
* 使用容器隔離
* 記錄所有操作
**永遠不要在生產環境中使用此標誌。**
合理使用 `--dangerously-skip-permissions` 可以提高自動化指令碼的效率,但必須嚴格遵循安全最佳實踐。1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14