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 の紹介でした。