0xf

日記だよ

codex-cliくんのサンドボックスと環境変数 : macOS

こういうことがありまして。

› あなたの環境で which hoge の結果を教えてください
• 私は which hoge を実行しました。結果は以下です。

  - /usr/local/bin/hoge


› % which hoge
  /opt/homebrew/bin/hoge

codex 環境での環境変数は seatbelt の管理下にあった

env を実行してもらう。

› あなたの環境で env の実行結果を教えてください

$ env
...

CODEX_SANDBOX=seatbelt
CODEX_SANDBOX_NETWORK_DISABLED=1

...

PATH=/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/
run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/opt/pmk/env/global/bin:/Users/ma2saka/.local/bin:/var/folders/81/tdpn0f591m56r4zlnc8grhkc0000gn/T/.tmppUm0P9:....(通常のPATH)

...

codex は Mac 環境では現在 seatbelt-exec によってサンドボックスを用意している。どうやらPATHも /usr/local/bin が最初に設定されている。なるほど。こいつが /usr/local/bin を優先させている。

それはそうと、たまに見ると環境から env が全部引き継がれているのでウッとなりますね。

inherit = "core" を指定する

[shell_environment_policy]
# inherit can be "all" (default), "core", or "none"
inherit = "core"

この状態で codex から env の実行結果を見ると、超スッキリしている。

• env の実行結果です。

  CODEX_SANDBOX=seatbelt
  CODEX_SANDBOX_NETWORK_DISABLED=1
  HOME=/Users/ma2saka
  LOGNAME=ma2saka
  PATH=/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/
run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/opt/pmk/env/global/bin:/Users/ma2saka/.local/bin:/var/folders/81/tdpn0f591m56r4zlnc8grhkc0000gn/T/.tmppUm0P9:.... (通常のPATH)
  SHELL=/bin/zsh
  TMPDIR=/var/folders/81/tdpn0f591m56r4zlnc8grhkc0000gn/T/
  USER=ma2saka
  SHLVL=0
  PWD=/Users/ma2saka/codex-sample/
  OLDPWD=/Users/ma2saka/
  LANG=C.UTF-8
  Q_SET_PARENT_CHECK=1
  TTY=not a tty
  SHELL_PID=39453
  _=/usr/bin/env