[[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専用トークンに固定できます。
> 必要なら、このラッパーの作成手順をあなたの環境向けに最短でまとめます。