<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ripgrep on Codexer</title><link>https://codexer.com/tags/ripgrep/</link><description>Recent content in Ripgrep on Codexer</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 14 Oct 2026 07:50:00 +0800</lastBuildDate><atom:link href="https://codexer.com/tags/ripgrep/index.xml" rel="self" type="application/rss+xml"/><item><title>沙箱的黑名单是问 ripgrep 借的：Codex 0.162 补了两个洞，也埋了两个配置坑</title><link>https://codexer.com/posts/2026-10-14-codex-sandbox-ripgrep-deny-glob/</link><pubDate>Wed, 14 Oct 2026 07:50:00 +0800</pubDate><guid>https://codexer.com/posts/2026-10-14-codex-sandbox-ripgrep-deny-glob/</guid><description>&lt;p&gt;你可能也这么干过：在一台 Linux 机器上跑 Codex，把 &lt;code&gt;.env&lt;/code&gt;、&lt;code&gt;~/.aws/credentials&lt;/code&gt;、一份带客户数据的目录写进沙箱的 deny 规则，然后把权限开到全自动，起身去倒杯水。心里清楚这些路径它碰不到。&lt;/p&gt;
&lt;p&gt;规则本身没写错。执行规则的却是一条命令链，链子上有一环，要去问你机器上的配置。&lt;/p&gt;
&lt;p&gt;10 月 8 日发布的 Codex CLI 0.162.0 补掉了两个这样的环。&lt;/p&gt;
&lt;h2 id="沙箱不认识文件得先问别人一遍"&gt;沙箱不认识文件，得先问别人一遍&lt;/h2&gt;
&lt;p&gt;Linux 上的 Codex 沙箱由 bubblewrap 搭起来，文件系统策略要靠一份具体的文件名清单才能生效。这份清单怎么来？把 deny glob 一条条展开，问 ripgrep 哪些文件命中。&lt;/p&gt;
&lt;p&gt;内部首选的做法是 &lt;code&gt;rg --files --hidden --no-ignore --glob ...&lt;/code&gt;，机器上没有 &lt;code&gt;rg&lt;/code&gt; 时回退到 Codex 自己实现的 globset walker。两条路都依赖同一份由外部程序给出的文件列表，沙箱的安全边界就落在它上面。&lt;/p&gt;
&lt;p&gt;而 ripgrep 会读用户配置。&lt;/p&gt;
&lt;p&gt;PR #51527（10 月 7 日合入）的描述写得很直白：用户的 ripgrep 配置可以压制这份用来构造 Linux 沙箱 deny 掩码的文件列表，&lt;code&gt;RIPGREP_CONFIG_PATH&lt;/code&gt; 里的 &lt;code&gt;--quiet&lt;/code&gt; 会让命中 deny glob 的文件不被遮蔽。&lt;/p&gt;
&lt;p&gt;换成白话：你在沙箱里写「这个目录不许看」，Codex 转头问 &lt;code&gt;rg&lt;/code&gt;「这个目录下有哪些文件」，&lt;code&gt;rg&lt;/code&gt; 因为你自己的配置闭上了嘴，回来说「一个都没有」。清单空了，掩码也就空了。&lt;/p&gt;
&lt;p&gt;修的办法是从根上断掉这种耦合，给那次调用加上 &lt;code&gt;--no-config&lt;/code&gt;，让它无论环境变量指向哪份配置都不读。&lt;/p&gt;
&lt;p&gt;顺带说一句 ripgrep 的脾气：它不会去任何预设目录翻配置，只有你主动把 &lt;code&gt;RIPGREP_CONFIG_PATH&lt;/code&gt; 指过去，它才会读。&lt;/p&gt;</description></item></channel></rss>