emahiro/b.log

日々の勉強の記録とか育児の記録とか。

gh auth token が Coding Agent の設定で便利すぎる

Overview

gh コマンドで認証後に gh auth token コマンドを叩くとその時に有効な PAT が出力される、ということを知って便利すぎたので備忘録です。

モチベ

Claude Code などの Coding Agent を使っていると、MCP (最近 Claude Code だと plugin) で GitHub を設定することが多いと思いますが、このときに毎回 GitHub の Personal Access Token(PAT) を設定する必要があります。
ただ、Claude Code と Gemini と Codex それぞれで MCP を設定するときにそれぞれに PAT を指定する必要がありますし、端末交換などをしたらそれまた設定し直しです。
そもそもPAT は一度設定したらあまり触らないので、どこに(.zshrc など)にどう設定したのか覚えてないことも多いです。

とはいえ、PAT を生でいろんな所に散らすのもリスクですし、最近自分は .claude や .codex といったユーザースコープのメモリを Git 管理してるのもあって変なコミットが混ざって PAT が漏洩する、といったことも起こりえません。なのでめんどいけど生 PAT を管理するか、と思っていたんですが、そんなときに gh コマンドの gh auth token を教えてもらいました。

各 Agent 間の設定

前述したとおり gh auth token を実行すると、その時点で有効な PAT が取得できます。
なので例えば Claude Code では plugin 設定をしてますが、 settings.json の hooks で gh auth token をセットしてセッション内で利用できるようにしています。

{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          {
            "async": true,
            "command": "TOKEN=$(gh auth token 2>/dev/null); if [ -n \"$TOKEN\" ]; then export GITHUB_PERSONAL_ACCESS_TOKEN=\"$TOKEN\" && echo '[GitHub認証] gh auth tokenから取得成功'; else echo '[GitHub認証] gh auth tokenが利用できません。gh auth loginを実行してください'; fi",
            "type": "command"
          }
        ]
      }
    ]
  }
}

codex では以下のように設定しています。

[mcp_servers.github]
command = "bash"
args = ["-l", "-c", "export GITHUB_TOKEN=$(gh auth token); npx -y @modelcontextprotocol/server-github"]

gh auth token を設定するだけで Coding Agent のセッションに有効な PAT を設定できます。
そして生 PAT を管理する必要はありません。

まとめ

周りの人に教えてあげたくらい神オプション gh auth token の紹介でした。