1. “Codex’s Linux sandbox uses bubblewrap and needs access”とは?
macOS から SSH で Linux サーバーに接続し、OpenAI Codex CLI を動かしていると、起動直後にこんな警告が出ることがあります1。

⚠ Codex's Linux sandbox uses bubblewrap and needs access to create user namespaces.
これは、セキュリティ面でどのような意味なのでしょうか?
警告の背景にある仕組みと、Ubuntu 24.04 での解決手順を整理します。
1.1. Codex CLI がサンドボックスを使う理由
bubblewrapは、意図しないファイル破壊やネットワークアクセスを防ぐためのツールです。
Codex CLI は AI がターミナルコマンドを自律的に実行するツールなので、Linux ではその実装に bubblewrap というツールを使っています2。
コマンド名は bwrap です。
bubblewrap はもともと Flatpak などのアプリ隔離で使われているサンドボックスツールで3、root 権限なしにプロセスを隔離できます。
Codex はこれを使って、AI が実行するコマンドをファイルシステムの大部分が読み取り専用の別空間の中に閉じ込めます4。
サンドボックスなしでも Codex は動きますが、その場合、隔離は Codex 自身の承認フロー、つまり「このコマンドを実行していいですか?」という確認だけに頼ることになります。
実行を許可したコマンドはログインユーザーの権限をそのまま持って動くので、AI が予期しない動作をしたときの影響範囲が広くなります。
1.2. 「user namespaces」とは何か
bubblewrap がサンドボックスを作るとき、Linux カーネルの「ネームスペース」という機能を使います5。
「ネームスペース」とは、プロセスから見えるファイルシステム・ネットワーク・ユーザー ID などを仮想的に分離する仕組みで、Docker などのコンテナ技術の基盤でもあります。
このうち user namespaces という機能を使うと、root 権限なしに「そのプロセスの中だけで root に見える」状態を作れます6。
bubblewrap はこの機能によって、一般ユーザーのまま強力な隔離環境を構築しています。
2. 警告が出る原因
Ubuntu 24.04 は AppArmor というセキュリティモジュールを搭載しており、デフォルトで非特権ユーザーによるユーザーネームスペースの作成を制限しています7。
制御するカーネルパラメータは次のものです。
kernel.apparmor_restrict_unprivileged_usernsCode language: CSS (css)
これが 1 になっていると、bubblewrap がネームスペースを作ろうとしても 許可されていない操作です というエラーで失敗します。
Codex はそれを検知して冒頭の警告を出します。
状況を確認するには次のコマンドを実行してください。
unshare -Ur true && echo "OK" || echo "NG"
sysctl kernel.apparmor_restrict_unprivileged_usernsCode language: Bash (bash)
NG が出て、パラメータが 1 であれば、この制限が原因です。

2.1. 解決手順
その場で制限を解除するには、
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0Code language: Bash (bash)
再起動後も維持されるよう永続化するには、
echo 'kernel.apparmor_restrict_unprivileged_userns=0' | sudo tee /etc/sysctl.d/99-userns.confCode language: Bash (bash)
8
動作確認は、
unshare -Ur true && echo "OK"Code language: Bash (bash)
OK と表示されれば bubblewrap が使える状態になっています。
Codex CLI を再起動すると警告が消え、サンドボックスが有効な状態で動き始めます。
3. セキュリティ上の考え方
kernel.apparmor_restrict_unprivileged_userns=0 にすることで、ユーザーネームスペースを一般ユーザーが自由に作れるようになります。
これは Codex のサンドボックスを有効にするためのトレードオフで、悪意あるプログラムが同じ機能を悪用する可能性もゼロではありません。
Codex を使う開発用 Linux マシンであれば、bubblewrap によって AI の実行コマンドが隔離されることのメリットの方が大きいでしょう。
プロダクション環境の共有サーバーに適用する場合は、影響範囲を確認した上で判断してください。
Ubuntu の AppArmor がこの制限をデフォルトで有効にしているのは、カーネル 6.x 系で user namespaces を使った権限昇格の手法がいくつか報告されたことへの対応です9。
設定を変更する際は、そういった背景も頭に置いておくと判断の助けになります。
- Codex CLI は OpenAI が開発したターミナル向けコーディングエージェントです。Rust で書かれたオープンソースソフトウェアで、npm または Homebrew でインストールできます。ChatGPT Plus 以上のプランに含まれており、API キーでも利用できます。 – CLI – Codex | OpenAI Developers
- bubblewrap は containers プロジェクトが管理するオープンソースのサンドボックスツールです。ソースコードは GitHub で公開されています。 – containers/bubblewrap
- Flatpak は Linux 向けのアプリケーション配布フレームワークです。bubblewrap を内部で使ってアプリをサンドボックス化しており、libgnome-desktop や sandwine など複数のプロジェクトでも採用されています。 – containers/bubblewrap README
- Codex のサンドボックスは、AIが実行するコマンドをOS レベルで制限します。ファイルの読み書き範囲とネットワークアクセスを境界として定義し、境界を超える操作が必要になったときのみ承認フローに切り替わります。 – Sandbox – Codex | OpenAI Developers
- Linux 6.1 時点のネームスペースには cgroup、ipc、mnt(マウント)、net(ネットワーク)、pid(プロセス ID)、time、user、uts(ホスト名)の8種類があります。それぞれ異なるリソースを隔離します。 – namespaces(7) – Linux manual page
- user namespaces は Linux カーネル 3.8 で追加されました。他のネームスペース種別(net、pid など)は作成に root 権限が必要ですが、user namespaces だけは非特権ユーザーでも作成できます。 – namespaces(7) – Linux manual page
- この制限は Ubuntu 23.10 でオプトインとして導入され、Ubuntu 24.04 LTS でデフォルト有効になりました。非特権ユーザーが kernel の脆弱性を悪用する際に user namespaces を経由するケースへの対策として Canonical が実装しました。 – Restricted unprivileged user namespaces are coming to Ubuntu 23.10 | Ubuntu
/etc/sysctl.d/ディレクトリに.conf拡張子のファイルを置くと、systemd-sysctl サービスがブート時にファイル名のアルファベット順で読み込み、カーネルパラメータを適用します。99-というプレフィックスは、ディストリビューションのデフォルト設定より後に読み込まれるよう順序を制御するための慣習です。 – sysctl.d – Ubuntu Manpage- 2025年1月、セキュリティ企業 Qualys が Ubuntu の制限を迂回する3つの手法(aa-exec、busybox、LD_PRELOAD を使ったバイパス)を公表しました。いずれもホスト上での root 権限昇格ではなく、ネームスペース内での管理者相当の権限を得るものです。 – Three bypasses of Ubuntu’s unprivileged user namespace restrictions