2025‑07‑16 時点 / Gemini CLI 0.1.12 以上を前提
TL;DR
- Codespaces では
localhost
リダイレクトが CLI に届かず OAuth が失敗 -
API キー認証 (
export GEMINI_API_KEY=...
)だと余計なお金がかかる -
v0.1.12 以降なら
NO_BROWSER=true
で ヘッドレス OAuth が使える - ポートフォワーディングでも回避できるが毎回手動なので非推奨
症状
$ gemini auth
Waiting for authentication...
- 指示通りブラウザで Google ログイン →
localhost:xxxxx/oauth2callback
へリダイレクト - ブラウザは
This site can’t be reached
、ターミナルは固まったまま
原因
Codespaces はリモートコンテナ。ブラウザがアクセスする localhost
は 自分の PC、CLI が待機するのは コンテナ内 :xxxxx。したがって OAuth コールバックを受信できない。
解決策
1️⃣ Gemini API キー を使う(最速)
# Google AI Studio でキー発行
export GEMINI_API_KEY="AIza...Fg" # ~/.bashrc などに追加
source ~/.bashrc
# これだけで認証完了
gemini
✅ 長所 | ⚠️ 短所 |
---|---|
1 行で完了/ブラウザ不要 | 無料枠は 1 日 100 リクエスト |
注意: プロジェクトに
.env
があると CLI がそちらを優先する既知バグ (#2493)。同じ変数を.env
にも書くか、ファイル名を変えて回避。
2️⃣ ヘッドレス OAuth(v0.1.12+)
npm i -g @google/gemini-cli@latest # まずアップデート
export NO_BROWSER=true # ブラウザ自動起動を抑止
gemini # 1 回目:設定ファイル生成 → 終了指示
gemini # 2 回目:URL+CODE を出力
# ブラウザで URL を開く → CODE をコピー
# ターミナルに貼り付け → 認証完了
追加オプション:
変数 | 役割 |
---|---|
GEMINI_DEFAULT_AUTH_TYPE=oauth-personal |
API キーより OAuth を優先 |
3️⃣ ポートフォワーディングで強行突破(非推奨)
-
gemini auth
実行中に Ports ビューでランダムポート (例 32993) を public に変更 - Google ログイン後、ブラウザ URL
http://localhost:32993/...
のlocalhost
を
https://32993-<codespace-id>.githubpreview.dev
に置換 - Enter → CLI がコールバックを受信、認証完了
毎回ポートが変わり手間。緊急用。
認証方式比較
API キー | ヘッドレス OAuth | ポート転送 | |
---|---|---|---|
設定時間 | ◎ 数秒 | ○ 1–2 分 | △ 数分 |
無料枠/上限 | 100 req/day | 契約プラン依存 | 契約プラン依存 |
再認証の頻度 | なし | 30 日ごと | 30 日ごと |
手間 | 最小 | 中 | 大 |
まとめ
- 試すだけなら API キー が最速
- 本格利用なら ヘッドレス OAuth (v0.1.12+)
- ポート転送は最後の手段として覚えておく
参考リンク
- Gemini CLI GitHub: https://github.com/google-gemini/cli
- v0.1.12 Release Notes: https://github.com/google-gemini/cli/releases/tag/v0.1.12
- Google AI Studio: https://aistudio.google.com/