Claude Code 的 grep 对 git 白名单仓库静默丢弃子目录文件
sndsgn · ghdev · 2026-10-17
Claude Code 的 Bash 工具把 grep 替换成内嵌 ugrep 并加 --ignore-files 参数,暴露出一个比此前报告更严重的 bug:当仓库用 deny-by-default 加 allowlist 的 .gitignore(如 + !/ + !bin/)时,从绝对路径或 ../repo 这类非 . 路径发起递归搜索,会静默丢弃子目录中被重新包含的文件(如 !bin/ 匹配的文件),而根目录级的 re-include(!/X.md)仍生效。
关键危害:结果通常是部分结果且退出码为 0,输出看起来像普通搜索结果,没有任何信号提示子目录被跳过。git check-ignore 确认未被忽略的文件也会被丢弃。
- 帖内给出完整复现脚本:临时目录建 repo、写 .gitignore、对比 command grep 与被 shadow 的 grep 在不同搜索根路径下的结果差异
- 规避方法:用 command grep 调用真正的 grep,或从 . 搜索
- 仓库含少量允许路径的 deny-by-default .gitignore 是常见模式,影响面不小
标签为 bug、has repro、platform:macos、area:bash,目前 3 条评论。
「编程与Agent」频道最新
- PHP/node.js/GitLab 大规模安全事件后,Cognition 开源 Devin 修复插件 — Scobleizer · 2026-10-23
- 用 Grok 机器人+租 GPU,个人微调模型变得触手可及 — Rasmic · 2026-10-23
- 一句 prompt 挖出 PHP 预认证 RCE:Agent 辅助漏洞挖掘实录 — chrisrohlf · 2026-10-23
- AutoRouter 公测:按任务难度自动在 Claude/GPT 等模型间分单省 token — floguo · 2026-10-23
- Speak 详解 GPT-Live 实时语言家教:如何用低延迟决策实现即时纠错 — pbbakkum · 2026-10-23
- Google Live API 新增决策触发器,比 function call 更快 — pbbakkum · 2026-10-23