防护容易绕过,并在解析失败时放行命令
原文依据:4 处说明声称阻止所有 git push 变体及多种破坏性命令,但脚本只搜索若干固定文本片段。等价写法如 `git -C repo push`、额外空格、`git clean -df` 或长选项不会命中。脚本还依赖 jq,却未验证 jq 是否成功;解析失败后 COMMAND 可为空,最终仍返回 0。
用户可能误以为危险 Git 操作已被可靠禁止,但 Claude 仍可能通过未覆盖的合法语法执行推送、永久删除未跟踪文件或丢弃工作。
该技能声称会阻止所有 `git push` 变体,但脚本仅对整条命令搜索少量固定正则片段。例如命令在 `git` 与 `push` 之间加入 `-C repo`,或改变空格、选项顺序时,可能不匹配并以 0 放行。脚本也依赖 `jq` 提取命令,却没有检查解析是否成功;缺少 `jq`、无效 JSON 或字段缺失时,空值可能走到最终的 `exit 0`。这会让用户误以为防护范围比实际更完整。用户可要求作者采用结构化命令解析、失败时拒绝执行,并提供绕过形式的测试。
- `git push` (all variants including `--force`)- `git reset --hard`- `git clean -f` / `git clean -fd`- `git branch -D`- `git checkout .` / `git restore .`查看另外 3 个位置
INPUT=$(cat)COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command')DANGEROUS_PATTERNS=( "git push" "git reset --hard" "git clean -fd" "git clean -f" "git branch -D" "git checkout \." "git restore \." "push --force" "reset --hard")for pattern in "${DANGEROUS_PATTERNS[@]}"; do if echo "$COMMAND" | grep -qE "$pattern"; then echo "BLOCKED: '$COMMAND' matches dangerous pattern '$pattern'. The user has prevented you from doing this." >&2 exit 2 fidoneexit 0