日本語
CLI 認証の正しい方法:4つの方法の完全ガイド
重要な4つの CLI 認証方式、その GitHub、AWS、および AI ツールによる実装方法、そして避けるべきセキュリティの落とし穴に関する解説。
すべての開発者 CLI は最初のコマンドとして login を備えています。しかし、認証(auth)の仕組みは CLI ごとに異なります。
GitHub はコードを表示し、ブラウザを開いてその認証を求めます。AWS は PKCE ベースのSSO用にブラウザを開きます。Stripe はダッシュボードでペアリングコードの確認が必要です。新しい AI ツール(Claude Code、OpenAI Codex CLI、Cursor)もそれぞれ独自の方式を採用しています。
CLI を開発する際、認証は最初に考えるべき機能のひとつです。認証方式を誤れば、ユーザーの不満やセキュリティ監査につながることもあります。さらに、最近はプログラムから CLI ツールを呼び出す AI コーディングエージェントも登場しており、そのリスクはより高くなっています。いまや人間だけでなく、自律プロセスにも認証情報を渡す場面があるのです。
ここでは、重要な4つの認証方式、それぞれの主要ツールでの実装例、また避けるべき失敗例を解説します。
4 つの方式をひと目で比較
まずはざっくり比較表です。
| 方式 | 最適な用途 | セキュリティ | ブラウザは必要? |
|---|---|---|---|
| OAuth デバイスコードフロー | ヘッドレス環境, SSH | 高い | 不要(同じマシン上の場合) |
| ブラウザベース OAuth(localhost リダイレクト) | ローカル開発 | 最も高い | 必要 |
| API キー / PAT | オートメーション, CI/CD, プロトタイピング | 中程度 | 不要 |
| クライアントクレデンシャル | サービス間通信 | 高い | 不要 |
それぞれ一長一短があります。以下で順に詳しく解説します。
1. OAuth デバイスコードフロー(RFC 8628)
この方式では CLI が ABCD-1234 のようなコードと URL を表示し、任意のデバイスでその URL を開いてコードを入力してもらう仕組みです。
採用例: GitHub CLI(デフォルト)、Azure CLI(--use-device-code)、Vercel CLI(2025年よりデフォルト)、OpenAI Codex CLI(β機能)

