ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

get-shit-done executor 报 “Permission to use Bash has been denied“ 怎么配置 permissions.allow

get-shit-done executor 报 “Permission to use Bash has been denied“ 怎么配置 permissions.allow get-shit-done executor 报 Permission to use Bash has been denied 怎么配置 permissions.allow【免费下载链接】get-shit-doneA light-weight and powerful meta-prompting, context engineering and spec-driven development system for Claude Code by TÂCHES.项目地址: https://gitcode.com/GitHub_Trending/getshi/get-shit-done在 Claude Code 中运行 get-shit-doneGSD执行一个 phase 时gsd-executor子代理第一次尝试执行git commit、bin/rails、bundle exec、npm run、uv run等写操作类 Bash 命令就会撞上 Permission to use Bash has been denied。原因是 Claude Code 默认的~/.claude/settings.json只放行了一小组只读 git 命令而 GSD 的 executor 需要对项目标准工具链拥有可写的 Bash 访问权限。解决办法是把对应的Bash(...)模式加进permissions.allow数组。为什么会报这个错GSD 的gsd-executor子代理需要写权限的 Bash 访问用于git commit、构建工具和测试工具。Claude Code 默认配置只允许一小部分只读 git 命令所以全新安装后 executor 第一次提交代码或运行构建工具时必然被拦。这个错误只在权限不足时出现不是 GSD 本身的故障配置一次即可。配置全局 permissions.allow主路径修改文件~/.claude/settings.json把所需模式加入permissions.allow数组。需要哪些模式取决于你的技术栈git gh 那一组所有项目都要加其余按你实际使用的语言栈选一组或几组。所有技术栈都需要git ghBash(git add:*), Bash(git commit:*), Bash(git merge:*), Bash(git worktree:*), Bash(git rebase:*), Bash(git reset:*), Bash(git checkout:*), Bash(git switch:*), Bash(git restore:*), Bash(git stash:*), Bash(git rm:*), Bash(git mv:*), Bash(git fetch:*), Bash(git cherry-pick:*), Bash(git apply:*), Bash(gh:*)Rails / Ruby 项目再加Bash(bin/rails:*), Bash(bin/brakeman:*), Bash(bin/bundler-audit:*), Bash(bin/importmap:*), Bash(bundle:*), Bash(rubocop:*), Bash(erb_lint:*)Python / uv 项目再加Bash(uv:*), Bash(python:*), Bash(pytest:*), Bash(ruff:*), Bash(mypy:*)Node / npm / pnpm / bun 项目再加Bash(npm:*), Bash(npx:*), Bash(pnpm:*), Bash(bun:*), Bash(node:*)Rust / Cargo 项目再加Bash(cargo:*)一个完整的 Rails 项目~/.claude/settings.json示例来自 docs/USER-GUIDE.md注意Write、Edit也在 allow 列表中{ permissions: { allow: [ Write, Edit, Bash(git add:*), Bash(git commit:*), Bash(git merge:*), Bash(git worktree:*), Bash(git rebase:*), Bash(git reset:*), Bash(git checkout:*), Bash(git switch:*), Bash(git restore:*), Bash(git stash:*), Bash(git rm:*), Bash(git mv:*), Bash(git fetch:*), Bash(git cherry-pick:*), Bash(git apply:*), Bash(gh:*), Bash(bin/rails:*), Bash(bin/brakeman:*), Bash(bin/bundler-audit:*), Bash(bundle:*), Bash(rubocop:*) ] } }只保留你的项目实际用到的分组即可上面示例是文档给出的 Rails 场景完整片段。只想对单个项目生效时项目级配置如果不想全局放行可以把同样的permissions.allow块写进项目根目录的.claude/settings.local.json替代~/.claude/settings.json。Claude Code 会先检查项目本地设置所以这种方式只对当前仓库生效。如何确认修复生效文档给出的验证路径是重新触发刚才被拦的动作executor 在被拦截时会指出它实际需要的具体模式例如Bash(bin/rails:*)。把该模式加入permissions.allow后重新运行/gsd-execute-phase不再出现 Permission to use Bash has been denied 即配置成功。如果 executor 报失败但你怀疑命令其实执行过了GSD 的编排器execute-phase、quick在报告失败前会抽查实际输出。看到失败信息但git log里已有新提交时说明工作实际上完成了这是已知的 Claude Code 分类 bug 的绕行行为与权限配置无关。替代路径与限制README.zh-CN.md 中给出的无摩擦用法是启动时加claude --dangerously-skip-permissions跳过所有权限确认README 将其标为 GSD 的预期用法如果你接受这个 flag 的影响范围就不需要逐条配置permissions.allow。README 同时给了一份更基础的细粒度permissions.allow示例Bash(date:*)、Bash(git status:*)等小集合可以作为全局配置的起点但 executor 场景请以本文的完整模式清单为准。权限模式按命令前缀匹配如Bash(npm:*)放行所有npm开头的命令新增工具链命令后仍报同样错误时检查该命令前缀是否已在对应分组中。若 executor 因权限被拦而中断在 phase 中间按它提示的模式补配置后从/gsd-execute-phase重跑即可不需要卸载重装 GSD。【免费下载链接】get-shit-doneA light-weight and powerful meta-prompting, context engineering and spec-driven development system for Claude Code by TÂCHES.项目地址: https://gitcode.com/GitHub_Trending/getshi/get-shit-done创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进