[[Fine-grained personal access tokenを作成 (GitHub)|Fine-grained personal access tokenを作成]]し、`$GH_READONLY_TOKEN` に設定する。 ## 設定 - **Note** - Codex CLI readonly - **Expiration** - 30 days - **Repository** access - Public repositories - **Repository** permissions - 指定はしない (readonlyになる) ## コマンド定義 `cx` コマンドを別途定義。`GH_TOKEN` は `GITHUB_TOKEN` の環境変数より優先される。 ```bash cx() { GH_TOKEN=$GH_READONLY_TOKEN codex "$@" } ``` 間違って `codex` コマンドを実行しないよう、起動時に[[chafa]]で画像を表示しておくようにするといいかもしれない。 ```bash cx() { chafa -s 30 <画像のpath> GH_TOKEN=$GH_READONLY_TOKEN codex "$@" } ``` ![[2026-02-25-08-00-53.avif]] ## rules変更 [[ルール (Codex CLI)|ルール]]に `gh api` を追加する。public repository限定のreadonly権限なので安心して利用できる。 ``` prefix_rule( pattern = ["gh", "api"] ) ``` ## [[AGENTS.md]] 以下のように記載する。`-f` オプションでPOSTになる罠があるので注意。 ```markdown ## 調査方法 - GitHubに関することは `gh api` コマンドを極力使う - 読み取り系エンドポイント(一覧/詳細取得)で `gh api` に `-f` / `-F` を使う場合は、必ず `--method GET`(または `-X GET`)を明示する。 - `gh api` は `-f` / `-F` 指定時に POST 扱いになるため、未明示だと意図せず作成APIを叩くことがある。 - 例: - `gh api repos/{owner}/{repo}/issues --method GET -f state=closed -f per_page=100 --paginate` ``` ## 参考 > [!left-bubble] ![[chappy.webp]] > • 一番安全で運用しやすいのは、Codex起動時だけ GH_TOKEN を read-only トークンにする方法です。 > gh は GH_TOKEN(または GITHUB_TOKEN)があると、保存済み認証よりそちらを優先します。 > > 1) read-only の Fine-grained PAT を用意(GitHub側) > 2) Codexを起動するシェルでだけ設定 > > ```bash > export GH_TOKEN='ghp_xxx_read_only' > codex > ``` > > これで: > > - Codex内の gh は read-only トークンを使用 > - 普段のあなたの gh auth login 環境はそのまま維持 > > 毎回手入力が面倒なら、ラッパー化します。 > > ```bash > # 例: ~/bin/codex-ro > #!/usr/bin/env bash > export GH_TOKEN="$(security find-generic-password -a "$USER" -s codex-gh-token -w)" > exec codex "$@" > ``` > > これを使って codex-ro で起動すれば、Codex専用トークンに固定できます。 > 必要なら、このラッパーの作成手順をあなたの環境向けに最短でまとめます。