API key not valid. Please pass a valid API key.
APIキーが拒否された状態。キーの形式ではなく、種類・プロジェクト設定が原因のことが多い。
エラー文字列
API key not valid. Please pass a valid API key.
⚠️ 標準エラーに出て、終了コードは 1 です。
_ApiError: {"error":{"code":400,"message":"API key not valid. Please pass a valid API key.",
"status":"INVALID_ARGUMENT","details":[{"@type":"type.googleapis.com/google.rpc.ErrorInfo",
"reason":"API_KEY_INVALID","domain":"googleapis.com",
"metadata":{"service":"generativelanguage.googleapis.com"}}]}}
An unexpected critical error occurred:[object Object]
何が起きているか
キーは送られています。Google 側が「そのキーは無効だ」と返しました。
🔴 最後の行に意味はありません
An unexpected critical error occurred:[object Object]
⚠️ これは Gemini CLI 側の表示の不具合です。 エラーを文字列にできず [object Object] になっています。原因の手がかりは1つもありません。
⭐ 見るべきは "reason" の値です。 上の例なら API_KEY_INVALID。ここに本当の理由が入っています。
API_KEY_INVALID になる理由
🔴 キーの文字列が間違っているとは限りません。 実際にはこちらが多いです。
| 原因 | 説明 |
|---|---|
| API が有効になっていない | キーの所属プロジェクトで Generative Language API が有効化されていない |
| キーの種類が合っていない | 制限のないキーは 2026-06-19 以降ブロックされる。新しく作ると Authorization キーになる |
| キーに利用制限をかけている | IP・リファラ・API の制限に、この呼び出しが引っかかっている |
| 別プロジェクトのキーを使っている | 環境変数に古いキーが残っている |
| 前後に空白や改行が入っている | コピー時に混入する |
⚠️ 他の指定は無視されます
v0.58.0 で実測しました。キーが無効な間、他の指定は一切効きません。
| 試したこと | 出たもの |
|---|---|
-m no-such-model(存在しないモデル) |
🔴 APIキーのエラーだけ |
-m gemini-2.0-flash(廃止されたモデル) |
🔴 APIキーのエラーだけ |
--extensions no-such-ext |
🔴 APIキーのエラーだけ |
⭐ 「モデル名が悪いのかも」と探しても無駄です。 キーを先に通してください。
直し方
1. どのキーが使われているか確認する
⚠️ 値そのものを画面に出さないこと。 長さと先頭だけで足ります。
macOS / Linux
for n in GEMINI_API_KEY GOOGLE_API_KEY; do
v=$(printenv "$n")
printf '%-18s %s\n' "$n" "${v:+${v:0:6}...(${#v}文字)}${v:-なし}"
done
Windows(PowerShell)
foreach ($n in 'GEMINI_API_KEY','GOOGLE_API_KEY') {
$v = [Environment]::GetEnvironmentVariable($n)
if ($v) { "{0,-18} {1}...({2}文字)" -f $n, $v.Substring(0, [Math]::Min(6, $v.Length)), $v.Length }
else { "{0,-18} なし" -f $n }
}
⚠️ 長さが想定より大きければ、空白や改行が混ざっています。
2. API が有効になっているか確認する(最も多い原因)
Google Cloud コンソール で、キーの所属プロジェクトを選び、Generative Language API が有効か確認します。
🔴 キーを作っただけでは使えません。 API を明示的に有効化する必要があります。
3. キーを作り直す
Google AI Studio で新しく発行します。
⭐ 2026-06-19 以降に作ったキーは、既定で適切な種類になります。 古いキーを直すより、作り直すほうが早いことが多いです。
export GEMINI_API_KEY=新しいキー
$env:GEMINI_API_KEY = "新しいキー"
4. 古いキーが残っていないか確認する
環境変数は複数の場所から来ます。シェルの設定ファイルやユーザー環境変数に古いものが残っていると、新しいキーを設定しても上書きされます。
grep -rn 'GEMINI_API_KEY\|GOOGLE_API_KEY' ~/.bashrc ~/.zshrc ~/.profile 2>/dev/null
[Environment]::GetEnvironmentVariable("GEMINI_API_KEY", "User")
5. 通ったか確かめる
gemini --skip-trust -p "hello"; echo "exit=$?"
⭐ 終了コード 0 になれば通っています。
似ているが別のエラー
再発防止
- 🔴
[object Object]は無視する。 見るのは"reason"の値 - キーを作ったら、そのプロジェクトで API を有効化する。 ここが最も多い抜け
- キーが通らない間は、モデル名や拡張の指定を疑っても無駄
- 環境変数は1か所に決める。複数に散らばると、直したつもりで直らない