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/