Codex(OpenAIのコーディング・エージェント)をdevcontainer(開発用コンテナ)の中に閉じ込めて動かすのは、 セキュリティの確保もできて、なかなか良いアイデアなのではと思いました。 ところが、vscodeで実際に試してみたところ、Codexのセキュリティの仕組みと絡んで、不都合な挙動があったので、 このやり方は公式にサポートされるまでは様子見が良いかなと今は思っています。 ## 確認したこと まずvscodeでdevcontainerを起動しました。 設定ファイル`.devcontainer/devcontainer.json`の中身は以下の通りです。 ```json { "name": "Ruby", "image": "mcr.microsoft.com/devcontainers/ruby:3-3.4" } ``` 次に、Codex拡張をインストールしました。 その次に、Codexにソースファイルの一部を変更する指示を出したところ、 `apply_patch`が上手くいかないのでsedなどを代わりに使うという返答で、 変更前後のdiffが見づらい形になりました。 なお、devcontainerの設定で指定するimageは以下の2つも試しましたが、 同じ現象に遭遇しましたので、特定のイメージでのみ発生する現象ではありません。 - ruby:3.4(Rubyの公式イメージ) - ghcr.io/openai/codex-universal:latest(OpenAIが公開している参考Dockerイメージ) ## `apply_patch`が失敗する背景 Codexが言うには、`apply_patch`はbwrapという一種のコンテナの中で動かす仕組みらしく、 devcontainerというコンテナの中でbwrapというコンテナを動かす、 つまり、コンテナの中でコンテナを動かすのに失敗しているらしいです。 具体的には、devcontainerの中でbwrapのコンテナのために新しいnamespaceを作ろうとして、 permissionの問題に遭遇しているとのこと。 Codexがbwrapを使うのはセキュリティを高めるためだと思いますので、 安易な設定変更などで`apply_patch`を出来るようにするのは、 セキュリティ上のリスクがあると見ています。