API Key Case について
API Key Case は、コーディングエージェントを使う開発者向けのローカル秘密情報管理・デプロイ制御ツールです。値を OS の秘密ストアに保存し、エージェント向けの情報をマスキングして、公式 CLI 経由でデプロイします。
主な機能
- 01プロジェクトの秘密情報リスクをスキャン
- 02マスキング済みのエージェント向け情報を生成
- 03OS の秘密ストアに値を保存
- 04公式 CLI 経由で秘密情報をデプロイ
- 05値を含めず操作結果を記録
活用シーン
- 01プロジェクト内の秘密情報参照リスクを確認
- 02マスキング済みのプロジェクト情報をエージェントに渡す
- 03秘密情報をローカルの安全な保管先に登録
- 04保護手順に沿ってクラウドプロジェクトへデプロイ
MCP 対応
入力には、MCP サーバーや MCP との接続についての説明はありません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
7掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | いいえ |
詳細
API Key Case
Hand an AI coding agent the work, not the key. API Key Case scans a project locally, reports likely secret-handling risks, and generates redacted context for Claude Code, Codex, Cursor, and similar tools. Values live in your OS secret store, and Pro deploy places them into Cloudflare, Vercel, or GitHub through those platforms' official CLIs — a secret value is never returned, printed, or logged.
日本語版のREADMEは README.ja.md にあります。
This README describes the v0.9.2 pre-stable release candidate.
@latestfollows npm's published dist-tag, which can lag during staged publication. Confirm that the exact0.9.2package is available before using its Agent workflow; the release checklist records the gates and acceptance evidence.This pre-stable tool reduces accidental exposure risk. It does not guarantee complete secret protection. Always review generated files before sharing them.
完全な安全は保証しない。事故確率を下げるツールです。生成物はAIや外部サービスへ渡す前に必ずご自身で確認してください。
Website · OS support status · npm · Changelog · Security · Support · Terms · Privacy · Brand and third-party notices
Quick start
The normal Agent-first support baseline is Windows 11 with Windows Hello. macOS is a collaborative verification edition: its implementation, current CI and real Keychain evidence exist, while native GUI approval, Accessibility resistance, Intel hardware and real-Mac provider deployment remain unverified. macOS verification is still in progress; do not purchase Pro relying on macOS deploy. See the OS support status and the macOS verification plan.
Requires Node.js 20 or later on Windows, macOS, or Linux. On Windows, high-risk
approval, remove, and trust forget in v0.9.1 require Windows 11 build 22000 or later
and Windows Hello (PIN, fingerprint, or face) set up for that account;
Windows 10 and accounts without Hello fail closed for those decisions and hand
off to a human instead, while scan, vault, and Secret input remain available.
Because deploy is the paid feature, check that before buying. Linux supports
local diagnosis, status/history, and human-owned-terminal storage when an OS
store is available; Agent-first input, approval, executing deploy, and
approval-required value/trust removal are not provided. Linux keyring backend
selection and login/reboot persistence remain environment-dependent.
The published release's basic commands can be tried independently:
# Scan the current project locally. Real .env contents are not read.
npx -y api-key-case@latest scan .
# Generate redacted context for an AI coding agent.
npx -y api-key-case@latest scan . --agent-report
# Save a value through a hidden interactive prompt.
npx -y api-key-case@latest save OPENAI_API_KEY
# Check status only. The value is never returned.
npx -y api-key-case@latest check OPENAI_API_KEY
Never put a real secret in a command argument, Issue, chat message, or generated report. Human-owned terminal use keeps the hidden prompt; Agent-first use must request save --ask and enter the value only in the Human Plane dialog.
現在の .env から始める
Agent に .env を読み取らせずに、すでに使用しているキーを登録できます。Secret 名だけを確認し、ご自身でファイルを開いて、その値だけを Human Plane にコピーしてください。これは自動取り込みではありません。API Key Case が元の .env を削除、同期、置換、またはその他の方法で変更することはないため、必要に応じて引き続き使用できます。登録だけで作業を終えてもかまいません。デプロイは別の作業です。
現在、スキャナーは .env.example と、一般的な JavaScript/TypeScript の参照を認識します。ほかの言語や未対応の構文で名前が見つからなくても、その Secret が不要という意味ではありません。名前がわかっていれば、直接保存または確認できます。ストレージにはデプロイ環境ごとの区分がないため、1つのプロジェクト/名前に開発用と本番用の値を同時に保持することはできません。登録する値を1つ選び、既存のエントリーを意図せず上書きしないようにしてください。
デプロイには、プロバイダー/プロジェクトに関する追加の制約があります。特に Cloudflare での Agent-first デプロイは、Wrangler プロジェクトに実際の .env、.env.*(.env.example を除く)、.dev.vars、または .dev.vars.* ファイルがあると、Wrangler がそれらのファイルを読み込む可能性があるため、API Key Case の安全条件により停止します。これはログインや Free プランの問題ではありません。ローカルでの Secret 登録は引き続き利用でき、API Key Case がファイルを変更することもありません。Pro を購入する前に、Free の準備状況診断を実行してください。
Agent-first の Control Plane と Human Plane(Phase A/B/C/D/E)
以下のコマンドには v0.9.2 が必要です。使用前に、
npx -y [email protected] --version の結果が 0.9.2 になることを確認してください。npm にその正確なバージョンが掲載されるまでは、候補版のテストで説明されているインストール済み候補版 tarball を使用してください。
api-key-case agent-init . # print the session protocol and manage existing host instructions
api-key-case agent-init . --check # no-write drift/symlink safety check
api-key-case agent-init . --host agents # explicitly create AGENTS.md in a fresh project
api-key-case next --json . # closed semantic status and nextActions
api-key-case save OPENAI_API_KEY --ask # separate Windows/macOS Human Plane
api-key-case history --json . # Free: past deploy results, never current values
agent-init は管理対象ブロック外の内容を保持し、プロジェクト内だけに書き込み、シンボリックリンク/ジャンクションを拒否します。また、グローバル設定や MCP 設定は編集しません。永続的な指示では、agent-init を実行する正確なバージョン(例:[email protected])を固定し、@latest や変動するメジャーバージョンの指定は使用しません。これにより、明示的に agent-init を再実行しない限り、安定版リリース前の後続マイナーリリースによって既存リポジトリの Agent プロトコルが変更されるのを防ぎます。
next --json が返すのは、固定された列挙値と名前/ステータスだけです。command、argv、自由形式の実行フィールドはなく、Secret の値、一部の値、値から生成されたハッシュ、値の長さも決して含まれません。actor: "human"、kind: "register-secret" の場合、正確なバージョンの Agent プロトコルは save <NAME> --ask を要求します。値は別個の Human Plane にのみ入力され、Agent 側に戻るのはステータスだけです。
Schema 2 では、Free の準備状況と、既存のコーディングエージェントが使用言語で説明するためのプロジェクト設定概要が追加されます。setup.stage と setup.counts には、登録済みの項目、不足している項目、対応が必要な項目が示されます。host には入力/承認要件が記載されます。各ターゲットの readiness は、Secret を設定したりダイアログを開いたりせずに、デプロイの実行時と同じ信頼できる CLI/設定ルールを使用して各環境を確認します。環境上のブロッカーは license.plan とは別です。Pro を購入しても、未対応のホストは解決できません。prerequisites-checked でも、人による操作とプロバイダーへの書き込み権限は未確認のままです。デプロイでは、必ず独自の境界条件を再確認します。ローカルでの登録はリモートへのデプロイではないため、setup.deploymentState は not-inspected のままです。
エージェントは不足している名前をまとめ、既存の入力ダイアログを順番に開き、指定された保存先を準備して、実際の操作結果を要約します。キャンセルまたは失敗が発生すると、そのグループは停止します。再利用可能な承認や一括承認が作成されることはありません。プロバイダーへのログイン、キーの発行、購入/ライセンスの有効化、OS の確認は、引き続き人間が満たす前提条件です。新規リポジトリの場合、現在のエージェントでは agent-init --host agents、--host claude、または --host cursor を明示的に使用できます。これにより、同じパス/ドリフトチェックを行う、そのホスト専用のプロジェクト指示のみが作成されます。--host を指定しない場合は、既存のホストマーカーのみが使用されます。セットアップの仕様を参照してください。
next --json の各ターゲットには deployment ブロックも含まれます。automatic には、現時点で人間の操作なしにエージェントがデプロイできる環境が列挙され、humanApproval にはそれ以外の環境が列挙されます。また、destinationTrust はこのプロジェクトの保存先が trusted、unconfirmed、changed、unresolved、not-applicable のいずれであるかを示します。保存先が未確認または変更されている場合は、actor: "human"、kind: "approve-deploy-destination" のアクションが追加されます。エージェントはそのアクションを伝達しますが、自らそれを満たすことはできません。
フェーズ B のシークレット入力とフェーズ C の高リスク承認には、Windows と macOS で別々の OS ダイアログが使用されます。Windows Hello が設定された Windows 11 ビルド 22000 以降では、計画ダイアログの「はい」/「削除」ボタンは IUserConsentVerifierInterop::RequestVerificationForWindowAsync を開始するだけです。承認されるのは OS の結果が Verified の場合のみで、それ以外の結果はすべて安全側に倒して失敗します。Linux、Windows 10、Hello を利用できないアカウント、ヘッドレスセッション、および固定システムヘルパーを検証できないホストでは、代わりに引き継ぎが行われます。エージェント所有の PTY フォールバックはありません。プロダクション、GitHub、Vercel 開発(プロバイダーから読み取り可能)、破壊的操作/上書き可能な操作、その他の高リスクな計画には、この境界が必須です。フェーズ C では、検証済みの判断が単一のプロセス内実行スナップショットに紐付けられます。
フェーズ D では、この境界に保存先側の要素が追加されます。実際に実行されるすべてのデプロイは、単一の Destination Identity(固定されたプロジェクトの realpath、ターゲット、環境、保存先を選択するリポジトリ設定、および同じ信頼済み CLI とサニタイズ済み環境を通じて解決されたプロバイダーアカウントの ID)に紐付けられます。人間が一度操作を確認すると、その ID は OS のシークレットストアに記録されます。初回使用時、または ID に変更があった場合は、Human Plane に戻ります。以降、確認済みの保存先に対する project スコープ内の --force を指定しない Vercel の preview のみ、再確認なしで繰り返し実行できます。
過去のデプロイ結果
新しいチャットを開始した場合や、デプロイタスクを再開した場合、エージェントは history --json も読み取ります。
過去の completed、incomplete、unknown の操作を報告します。失敗した
--force によってプロバイダーがすでに変更されている場合があります。中断された結果や保存されていない結果は
不明のままです。後の登録タイムスタンプは更新があったことを示しますが、タイムスタンプの一致や宛先の選択によって、現在の値が同じだと証明されることはありません。
履歴によって、承認、信頼、自動再試行、自動再デプロイが行われることはありません。
~/.api-key-case/deployment-history/ にあるローカルメタデータファイルには、プロジェクトごとに直近200件の試行が保持されます。ファイルには名前、スコープ、ターゲット/環境、
宛先のみを示す識別子、操作のタイムスタンプ/結果が含まれます。値、部分的な値、値のハッシュ/長さ、プロバイダーの出力は含まれません。デプロイが実行されていないときは、そのディレクトリ(またはプロジェクトのサブディレクトリ)を明示的に削除して履歴を破棄できます。保存された値と宛先への信頼は別個に管理されます。履歴が存在しない、または読み取れない場合は不明です。開始時の保存に失敗するとプロバイダーへの書き込み前に処理がブロックされ、結果の保存に失敗するとデプロイが成功していても警告が表示されます。その操作を自動的に繰り返すのではなく、停止して残りの作業について合意してください。
履歴レポートのスキーマ2では、ジャーナルが存在しない場合と、ロック、無効なデータ、アクセス、その他のクローズドな失敗コードを区別し、エージェント向けの復旧手順を示します。
ロックは実行中の操作が使用している可能性があり、クラッシュの証拠にはなりません。検査が成功しても、書き込みアクセスはテストされません。開始時の失敗は、この呼び出しがプロバイダーへの書き込みを行わなかったことを示します。結果の保存に失敗した場合も、実際の操作結果は保持されます。原因に対処した後で再検査し、メタデータを破棄するか、新たにデプロイするかを明示的に判断してください。復旧のために、既存のロック/履歴が自動的に削除されることはありません。既存のジャーナルファイルはスキーマ1のままです。
履歴の契約を参照してください。
デモ
28秒のワークフロー図解を見る(日本語字幕・音声) — エージェントが GitHub Secret の設定を案内し、人間が専用インターフェースから値を入力して承認します。
これは構成された図解であり、実際の認証情報をデプロイする様子を録画したものではありません。実際のシークレットは含まれていません。旧式の CLI デモ生成ツールは参考用として demo/ に残されていますが、以前の録画は現在のサイトや npm パッケージには含まれていません。
機能
.envと.env.*が無視対象になっているかを確認します。- ネストされたファイルを含め、環境変数ファイルが現在および過去に Git で追跡されているかを検出します。
.env.exampleと一般的なコード参照から、必要な環境変数名を見つけます。- 秘密である可能性が高い値を、元の行や値を再現せずに報告します。
- 値が空の
.env.exampleを生成します。 - AI コーディングエージェント向けの
AGENT_CONTEXT.safe.mdとAI_SAFE_PROMPT.mdを生成します。 - JSON 出力と、厳格な CI 終了コードに対応しています。
- シークレット値を OS のシークレットストア(Keychain/Credential Manager/Linux OS keyring)に保存し、登録済み/未登録の状態のみを報告します。値そのものは決して表示しません。
スキャナーのコアは実際の .env ファイルの内容を読み取らず、ネットワークリクエストも行いません。対象を指定したコマンドの終了後、テレメトリーが有効な場合は、別途ベストエフォートで匿名の利用イベントが送信されることがあります。スキャンデータがそのモジュールに渡されることはありません。
匿名の使用状況テレメトリ
CLI は、集計されたプロダクトの意思決定に、プライバシーを制限した PostHog イベント cli_command_result を 1 つ使用します。このイベントは scan、save、license_activate、deploy の場合にのみ送信され、固定コンテキスト product: api_key_case、surface: cli に加え、コマンド、結果、CLI バージョン、OS ファミリー、(deploy の場合は)許可リストに登録されたターゲットなど、選択肢が限定された値を含みます。シークレットの値や名前、環境変数名、パス、スキャン結果、argv、プロジェクトやライセンスの情報、生のターミナル入力は決して含みません。
テレメトリはデフォルトで有効ですが、対象となる最初の対話型コマンドでは、何かを送信する前に一度だけ通知が表示されます。v0.9.1 の配布ビルドには API Key Case の公開 PostHog Project Token が含まれているため、このビルドではユーザーがテレメトリトークンを指定する必要はありません。API_KEY_CASE_POSTHOG_PROJECT_TOKEN は開発/テスト/オーバーライド用のフックとして引き続き利用でき、空でない場合はそちらが優先されます。パッケージに Personal API Key や Project Secret API Key が含まれることはありません。配布トークンを含まないカスタムビルドでは、安全に何も行いません。非対話型の実行では通知の前にテレメトリが抑止され、CI 内または DO_NOT_TRACK=1 が設定されている場合は常に抑止されます。PostHog のエラーやタイムアウトは無視されるため、コマンドの結果に影響しません。匿名インストール ID はランダムな値で、~/.api-key-case/telemetry.json のみに保存されます。マシン、ユーザー、リポジトリ、ライセンス、ハードウェアから生成されるものではありません。
api-key-case telemetry status
api-key-case telemetry enable
api-key-case telemetry disable
disable はテレメトリを停止し、匿名インストール ID を削除します。後で再度有効にすると、新しい ID が作成されます。イベントの仕様と解釈ルールについては、docs/analytics/MEASUREMENT.md を参照してください。
行わないこと
- API キーを取得する機能ではありません。Cloudflare、Vercel、OpenAI などにログインして認証情報を取得または生成する連携はありません。値はプロバイダーから入手し、一度入力してください。
wrangler、vercel、ghを置き換えるものではありません。deployは、すでにインストールしてログイン済みの本物の CLI を実行します。いずれかが見つからない場合は、インストールや回避策の実行ではなく、手動での手順を表示します。- MCP が
productionまたは GitHub へのデプロイを完了することはなく、承認パラメーターやエリシテーションの経路もありません。リスクの高い CLI デプロイには、別途 Human Plane が必要です。エージェントが所有する stdin/PTY 入力では承認できません。 - シークレットが必ず秘密のままであることを保証するものではありません。実際に保護する対象と保護できない対象については、セキュリティモデルと制限事項を参照してください。
シークレットの保存(save/check/list/remove)
シークレットの保存経路は、ローカルで 2 つのうちいずれかです。人間が操作するターミナルでは、非表示の入力プロンプト → ローカル CLI プロセスのメモリ → OS のシークレットストアです。Windows/macOS でエージェントを先に使用する場合は、Human Plane のパスワードダイアログ → サニタイズ済みの固定パスヘルパーのメモリ → Credential Manager/Keychain です。ヘルパーは値を直接書き込み、親プロセスにはステータスのみを返します。macOS のヘルパーは、同じ /usr/bin/osascript プロセス内で Security.framework を呼び出します。security CLI や、値を引き渡す子プロセスは起動しません。どちらの経路でも値の表示、エクスポート、ログ記録、ファイルへの書き込みは行わず、argv やパイプ経由の stdin で値を受け取ることもありません。
api-key-case save OPENAI_API_KEY # prompts for the value (hidden input, TTY required)
api-key-case save OPENAI_API_KEY --ask # Windows/macOS Human Plane; Agent-side stdin is ignored
api-key-case check # status of every secret referenced by scan
api-key-case check OPENAI_API_KEY --json # status of one secret
api-key-case list # names and metadata only, never values
api-key-case remove OPENAI_API_KEY # deletes from the OS secret store (Human Plane decision)
オプション:
--scope user|project Store per-machine (user) or per-project (project, default).
--force (save) overwrite an existing secret without the confirmation error.
--ask (save) request Agent-independent Human Plane Secret input.
--json (check, list) machine-readable output.
--strict (check) exit with code 2 when one or more secrets are missing.
remove は、高リスクのデプロイで使用するものと同じ、エージェントに依存しない Human Plane ダイアログで人間が応答した後にのみ値を削除します。--yes も stdin による確認もないため、このプロセスのターミナルを制御するエージェントが削除を完了することはできません。このダイアログを利用できない場合、remove はフェイルクローズし、代わりに OS のシークレットストア独自の UI を使用するよう案内します。
終了コード 3 は、操作に利用できる OS のシークレットストアがなかったことを意味します。Linux では、現在のキーチェーン依存関係が Secret Service からカーネルの keyutils にフォールバックする場合があります。D-Bus がないことだけでは、この終了コードにはなりません。また、ステータスが available でも、ログインや再起動をまたいで永続化されるとは限りません。確認されたストレージの制限事項を参照してください。
シークレットのデプロイ(deploy / targets)— Pro 機能
deploy は、save で保存済みの値を、各プラットフォームの公式 CLI(wrangler、vercel、gh)を通じて Cloudflare、Vercel、または GitHub に送信します。直接 API を呼び出すことはありません。check/hasSecret では、OS のシークレットストアから読み取った結果は直ちに真偽値に変換され、値が返されたり、保存されたり、ログに記録されたりすることはありません。deploy 中に値が保持される経路は、OS のシークレットストア → この CLI が一度読み取る → 対象の CLI の標準入力に書き込む → 破棄する、だけです。値がコマンドライン引数、環境変数、一時ファイル、ログ行に含まれることはありません。また、取得した CLI の出力は、表示される前に値が除去されます。
--dry-run を含む deploy は、買い切りの Pro 機能です。Free で利用できるのは
scan、save、check、list、remove、targets、agent-init、next、history、
trust status、trust forget、および deploy_secret 以外のすべての MCP ツールです。
Free アクセスでホスト/承認の条件を回避することはできません。詳しくは以下のライセンスをご覧ください。
api-key-case targets # what's detected here, and is each CLI installed/logged in?
api-key-case deploy OPENAI_API_KEY --target cloudflare # development env by default
api-key-case deploy OPENAI_API_KEY --target vercel --env preview
api-key-case deploy OPENAI_API_KEY --target cloudflare --env production --dry-run
オプション:
--target <cloudflare|vercel|github> Required. This is a closed list; no other target is supported.
--env production|preview|development Default: development. production is never the default.
On github this also decides repository vs environment
secret — see "What each platform does" below.
--scope user|project Default: project. Does not fall back to user if not found there.
--dry-run Show the plan and stop before reading the value or running anything.
--force Vercel only: remove an existing value first, then add the new one.
production へのデプロイ、github へのすべてのデプロイ、Vercel の development(プロバイダーから読み取り可能)、すべての --force 操作、すべての --scope user デプロイ、および既存の値を上書きする可能性があるプロバイダー操作には、エージェントに依存しない Human Plane が必要です。Windows Hello を設定した Windows 11 ビルド 22000 以降では、固定パスの PowerShell プランダイアログの後に HWND に紐付いた OS ユーザー検証が行われ、Verified の場合に限り承認されます。既存の macOS AppKit ダイアログは変更されません。承認と実行は、引き続き 1 回の呼び出し内で行われます。Linux、Windows 10、Hello が設定されていないアカウント、および利用できない/ヘッドレスの Human Plane セッションでは、標準入力や再利用可能なトークンを受け入れず、フェイルクローズして人への引き継ぎを行います。
それ以外の操作では、人がすでに確認した宛先が必要です。project スコープで --force を指定しない Vercel の preview は、宛先 ID が変わらない限り、承認を求めずに繰り返し実行できる唯一の操作クラスです。wrangler secret put は常に上書きするため Cloudflare は対象外です。GitHub シークレットはどの --env でも CI からアクセスできるため、GitHub も対象外です。
実行されるデプロイには、具体的なローカル宛先が 1 つ必要です。具体的には、name と account_id を含む Wrangler 設定ファイルが 1 つだけあること、組織 ID とプロジェクト ID を含む Vercel の .vercel/project.json があること、または github.com 上の曖昧さのない origin リモートが 1 つ設定された GitHub リポジトリのルートであることです。ダイアログには、初回利用か前回の承認後に変更があったかを含め、宛先、固定されたプロバイダー ID、cwd、CLI パス、環境、コマンド、破壊的な事前処理が表示されます。状態が曖昧または変化している場合は拒否されます。Windows はレジストリの状態から独立して、信頼する CLI/プロファイルを解決します。macOS は OS のユーザーデータベースと、アーキテクチャを考慮した一般的なインストール先の閉じた一覧を使用します。どちらも新しいサニタイズ済み環境を渡し、CLI の実体が完全に一致することを固定して再確認します。macOS ではさらに、Node のシバンを使うプロバイダー CLI の Node ランタイムも完全に一致するものに固定します。Linux では現在、デプロイの実行を人に引き継ぎ、代わりに手動で行うプロバイダー手順を表示します。
対象の CLI がインストールされていない場合、またはログインしていない場合、deploy は推測やインストールを行わず、自分で実行するための手動手順を表示します。
確認済みの宛先を確認する(trust)
api-key-case trust status # which destinations you confirmed here
api-key-case trust forget --target vercel --env preview # make it ask for approval again
trust status は読み取り専用です。trust forget は、同じ Human Plane ダイアログを通じて確認情報を削除します。削除によって次回のデプロイで再び承認が求められることはあっても、承認が付与されることはありません。承認を求めずに繰り返し実行できる操作クラスだけが情報を記録するため、一覧は必然的に短くなります。
その後、各プラットフォームで値がどのように扱われるか
引き渡された後の値は、このツールではなくプラットフォームのルールに従います。
- Vercel の
--env developmentの値は、後から読み取れます。deployはここでは--sensitiveを渡さないため、vercelは Config 変数として保存します。プロジェクトへのアクセス権を持つ人なら誰でも、vercel env pullで値を読み取ることができ、ローカルの.envファイルに出力されます。読み取り不能のままにしたい値は、developmentに設定しないでください。以前の Vercel リリースでは、developmentの機密変数は完全に拒否されていました。vercel59.11.7 ではこのフラグを指定できます(2026-09-08 に確認済み)。そのため、これは現在、プロバイダーによる制約ではなく、このツール独自の慎重なデフォルト設定です。productionとpreviewでは、Vercel のデフォルト設定に頼らず、deploy自体が--sensitiveを渡すため、値は書き込み専用で保存され、後から読み取ることはできません。各デプロイの前に表示されるプランには、このフラグが含まれています。previewでは--yesも渡し、すべての Preview ブランチについて、Git ブランチに関する CLI のドキュメント記載のデフォルトが適用されます。これを指定しない場合、非対話型の実行はそのプロンプトで停止し、何も作成せずに正常終了します。(これらのフラグに対応していない古いvercelCLI では、読み取り可能な値を黙って保存するのではなく、デプロイが失敗します。) - Cloudflare では、Worker secret(
secret_text)として保存されます。後から読み取ることはできず、上書きのみ可能です。 - GitHub では、
--envに応じて、2 種類の異なるものとして保存されます。デフォルトのdevelopmentでは、リポジトリシークレットが書き込まれ、リポジトリ内のすべてのワークフローで利用できます。productionとpreviewでは、同じ名前の GitHub Environment の環境シークレットが書き込まれ、environment: <name>を宣言したジョブのみが読み取れます。また、その環境はあらかじめ GitHub 上に作成されている必要があり、そうでない場合はghが失敗します。そのため GitHub では、デフォルトのスコープが 3 つの中で最も広く、名前から想像されるものとは逆です。各デプロイの前に表示されるプランには、作成するシークレットの種類が記載されています。どちらの種類も後から読み取ることはできず、上書きのみ可能です。
ライセンス(deploy)
診断/準備状況の確認、エージェントのセットアップ、ローカルストレージと信頼の管理、および deploy_secret 以外の MCP ツールは、サポート対象の条件内で無料です。ドライランを含む deploy は、Lemon Squeezy からの一度限りの Pro 購入で利用できるようになります。価格は ¥2,980 で、サブスクリプションではありません。購入には v0.9.1 と Pro v1(1.x 系列)のアップデートが含まれます。将来のメジャーバージョンは、別途ライセンスが必要になる場合があります。
| 機能 | 無料 | Pro |
|---|---|---|
| ローカルスキャンと、秘匿情報を除去したエージェントレポート | ✓ | ✓ |
OS のシークレットストア(save / check / list / remove) | ✓ | ✓ |
| ターゲット/準備状況の診断、エージェントのセットアップと信頼の管理 | ✓ | ✓ |
deploy_secret 以外のオプションの MCP ツール | ✓ | ✓ |
Cloudflare / Vercel / GitHub の deploy(ドライランを含む) | — | ✓ |
購入 1 件は 1 人分で、購入者本人のデバイスとプロジェクトで使用できます。組織で使用する場合は、ユーザー 1 人につき購入 1 件が必要です。返金リクエストは、返金ポリシーに基づき 14 日間受け付けています。公式 Pro の権利とサービスには、利用規約が適用されます。ソースコードの使用には別の規定が適用され、各バージョンに同梱される LICENSE に準拠します。
api-key-case license activate # interactive hidden input; argv and non-TTY input are rejected
api-key-case license status [--json]
api-key-case license deactivate
Lemon Squeezy は、購入者ごとの購入キーをメールで送信します。license activate は、そのキーを HTTPS 経由で、固定の API Key Case Exchange Worker に一度送信します。Worker は、Lemon のライセンス、ストア/製品/バリアントが完全に一致すること、および注文が支払い済みで返金されていないことを検証し、Ed25519 署名付きの AKC1 ライセンスを返します。CLI はそのレスポンスを検証して保存します。その後の Pro チェックはすべてローカルかつオフラインで行われ、ライセンスの再検証、デバイスとの紐付け、有効期限の確認はありません。これは、前述のプライバシーを制限したオプトアウト可能な利用状況テレメトリーとは別の仕組みです。返金された注文では新たな交換はできませんが、すでにオフラインで保存された AKC1 をリモートから取り消すことはできません。
有効化の成功時とステータス出力では、汎用的な権利を注文ではなく、常にライセンスとして識別します。
OK: pro license activated (license ls_license_xxx).
plan: pro (license ls_license_xxx, issued YYYY-MM-DD)
署名付き AKC1 ペイロードは { "v": 1, "plan": "pro", "id": "...", "issuedAt": "..." } のままです。検証済みのプロセス内/JSON ステータスでは、その id 値は entitlementId という名前で示されます。
API Key Case 0.9.1 の製品コードは、Elastic License 2.0(Elastic-2.0)に基づきソースを利用できます。ソース、セキュリティ上重要な実装、テスト、設計記録は、動作や境界を確認できるよう公開されています。これは、プロジェクトが独立した監査を受けているという主張ではありません。Pro の権利とライセンスキーの実装に変更はなく、ソースコードのライセンスとは別のものです。生成された指示、ブランド、サードパーティの素材の境界については NOTICE を、設計と脅威モデルの全容については docs/design/phase-5-license.md を参照してください。
MCP サーバー(エージェント向け、オプション)
上記の CLI が主要なインターフェースです。api-key-case mcp を実行すると、同じステータス専用の操作をエージェントホストに直接公開する MCP(stdio)サーバーも起動します。シークレット値が MCP プロトコルを介して送信されることはありません。
api-key-case mcp [path] # path defaults to the current directory
クライアントに登録します。
# Claude Code
claude mcp add api-key-case -- npx -y api-key-case mcp
// Cursor (mcp.json)
{ "mcpServers": { "api-key-case": { "command": "npx", "args": ["-y", "api-key-case", "mcp"] } } }
7 つのツールを公開します:list_required_secrets、check_secret、save_secret、deploy_secret、generate_env_example、scan_secret_leaks、check_gitignore。save_secret には値を指定するパラメーターがなく、Vault にアクセスすることもありません。固定の save --ask Human Plane アクションを返します。値の入力に MCP エリシテーションを使用することはありません。deploy_secret は production または github へのデプロイを完了せず、ターミナルで api-key-case deploy を実行する人間に同様に引き継ぎます。有効な Pro ライセンスがない場合、deploy_secret はデプロイせず、購入リンクを示す通常のステータス(エラーではありません)を返します。セキュリティ境界の詳細については packages/mcp/README.md を参照してください。
必要条件
- Node.js 20 以降
- 履歴の追跡と確認には Git を推奨します
開発用チェックアウト
npm install
npm test
node dist/cli/index.js scan .
コマンド
api-key-case agent-init [path] [--check] [--host agents|claude|cursor]
api-key-case next --json [path]
api-key-case history --json [path]
api-key-case scan [path] [options]
agent-init は、ステータスのみの Agent プロトコルを初期化し、認識されたプロジェクトの指示マーカーを更新します。または、--host で明示的に選択した現在のホストを更新します。--check は書き込みを行わず、永続化が欠落しているか不整合がある場合は 2 で終了します。next には --json が必要で、前述の閉じたスキーマを出力します。
オプション:
--json Emit a machine-readable report.
--strict Exit with code 2 when warnings are found.
--write-env-example Generate .env.example with empty values.
--agent-report Generate agent-safe context and prompt files.
--force Replace generated files that already exist.
使用例:
api-key-case scan .
api-key-case scan . --strict
api-key-case scan . --json
api-key-case scan . --write-env-example
api-key-case scan . --agent-report
api-key-case scan . --agent-report --force
生成されたファイルはデフォルトで保持されます。既存のファイルは --force を指定した場合にのみ置き換えられます。
エージェントレポート
--agent-report は次のファイルを生成します。
.env.example:検出された変数名と空の値AGENT_CONTEXT.safe.md:変数名、使用箇所、実装上の制約AI_SAFE_PROMPT.md:再利用可能な AI コーディングエージェント用プロンプト
生成される Markdown には、名前とファイルの場所が含まれますが、シークレットの値は含まれません。生成されたファイルはすべて下書きとして扱い、共有する前に確認してください。
終了コード
0:コマンドが完了しました。--strictを使用していない場合、checkで警告やシークレットの欠落がある可能性があります(完了したdeploy --dry-runも0です)1:コマンド、オプション、パスが無効、スキャン失敗、保存または削除が拒否された、承認後に操作内容が変更された、deploy用に登録されていないシークレットがある、または対象 CLI でエラーが発生した2:scan --strict/check --strictで警告またはシークレットの欠落が検出された、あるいはagent-init --checkで永続化の欠落または不整合が検出された3:このシステムで OS のシークレットストアを利用できない(save、check、list、remove、deploy)4:Human Plane Secret の入力がキャンセルされた、または高リスクの deploy が明示的に拒否された5:deployの対象 CLI がインストールされていない、またはログインしていない、信頼された CLI/Human Plane の境界を利用できない、あるいはプロバイダーへの書き込み前にデプロイ履歴の開始を保存できない6:deployには Pro ライセンスが必要です(api-key-case license activate)
セキュリティモデルと制限事項
- 検出結果では
***REDACTED***を使用し、ソース行と値の一部は表示しません。 - 実際の環境ファイルは、内容ではなくファイル名と Git の状態に基づいて検査します。
- トークン検出はヒューリスティックで、既知のキー形式の限定されたセットに一致するものを、特定のテキストファイル拡張子のみスキャンします(
node_modules、dist、ビルド出力、および 1 MB を超えるファイルはスキップします)。誤検出が発生したり、未知の形式やスキャン対象外のファイルを見逃したりする可能性があります。スキャンで問題が見つからなくても、「明らかなものは見つからなかった」という意味であり、「何もない」という意味ではありません。 - Git 履歴の検査で検出するのは環境ファイルのファイル名であり、過去のシークレット値をすべて検出するわけではありません。
- 悪意のあるリポジトリには、誤解を招くソーステキストやファイル名が含まれている場合があります。生成されたコンテキストをエージェントに渡す前に確認してください。
- これは、GitHub のシークレットスキャン、Gitleaks、TruffleHog、シークレットマネージャー、または認証情報のローテーションに代わるものではありません。
deployが値を標準入力経由でwrangler、vercel、またはghに渡した時点で、その値は公式 CLI 自体のプロセス内にあります。その後は、このプロジェクトではなく、その CLI のロギングや動作の対象となります。出力のサニタイズで対象となるのは、この CLI に返される内容であり、対象の CLI 内部での動作ではありません。- OS のシークレットストア独自の UI(Keychain Access、Credential Manager、または Linux の Secret Service フロントエンド)で値を読み取り、手作業でチャット、チケット、または AI との会話に貼り付けたり入力したりすることを防ぐものはありません。このツールが閉じるのは、直接制御する経路だけです。
- OS のシークレットストアの強度は、OS アカウントと、OS のキーチェーンが適用するアプリケーションごとのアクセス制御に依存します。この CLI は独自の第 2 の保護を追加せず、プラットフォームの保護に依存します。
AKC1Pro ライセンスは、オフライン利用のために一度交換すると、リモートから取り消すことはできません。返金によってブロックされるのは、次回 の交換のみです(ライセンスを参照)。このオフラインライセンスチェックは、オプトアウト可能な匿名利用状況テレメトリーとは独立しています。- 実際の認証情報がコミットされたり、ほかの方法で漏えいしたりした場合、漏えいを取り消すにはプロバイダー側でローテーションするしかありません。スキャンで問題が見つからないことや、ファイルを削除することでは不十分です。ファイルを削除するだけでは解決になりません。
- 実行される
deployはすべて、信頼された絶対 CLI パスとサニタイズ済み環境を固定し、プロセスの起動前にプロジェクトの作業ディレクトリ(cwd)、宛先設定、認証メタデータ、プロバイダー環境変数の有無、プラン、または CLI の識別情報に変更があれば中止します。何も実行しない--dry-runは、通常の PATH 解決を引き続き使用します。 - 高リスクのデプロイには、フラグ、標準入力による承認、承認パラメーター、または再利用可能な承認認証情報はありません。Human Plane が利用できない場合は、プラットフォーム独自の CI ネイティブなシークレット注入を使用してください。
- 宛先の信頼レコードは承認ではありません。OS のシークレットストアに保存するのは宛先のフィンガープリントのみで、単独では何も許可せず、
production、github、Vercel のdevelopment、--force、または変更された宛先は対象外です。また、ファイルを書き込んで作成することもできません。OS の認証情報 API を直接呼び出せるものは、すでにこのツールが依存する OS アカウントの信頼境界内にあります。
報告方法、既知の制限事項、認証情報が漏えいした場合の対応については、SECURITY.md を参照してください。
開発
npm test
npm run build
npm pack --dry-run
npm pack は、prepack ライフサイクルを通じて検証スイート全体を実行します。
npm run test:package は実際の tarball をビルドし、そのファイル境界を確認して、開発用依存関係なしで使い捨ての利用側プロジェクトにインストールし、実行可能ファイルの検出、新規 Agent ホストのセットアップ、ドリフト時の拒否と診断をテストします。また、その利用側プロジェクトのランタイム依存関係も監査します。キャッシュ済みパッケージを使用してネットワーク監査をスキップするには、-- --offline を追加してください。
dbus-run-session、gnome-keyring-daemon、dbus-send、gdbus がすでにインストールされている Linux では、npm run test:keyring:linux によって使い捨ての D-Bus セッションと XDG データディレクトリを作成します。厳格な実際の OS ストアチェックを含むスイート全体を実行した後、インストール済みの tarball をそのストアに対して検証します。値はすべて合成データであり、ユーザーが既に使用しているログインキーリングは置き換えられません。これによって Linux Human Plane/デプロイのサポートが追加されることも、Windows/macOS のダイアログが検証されることもありません。検証記録を参照してください。
リポジトリには、スキャナーのマスキング動作を検証できるよう、テストやデモ用フィクスチャに合成カナリア値を意図的に含めています。そのため、ルートディレクトリで npm run scan を実行すると、これらのフィクスチャに関する想定内の警告が報告される場合があります。警告を抑えるためにスキャナーを弱めたり、広範な除外ルールを追加したりしないでください。検出箇所を確認し、リリースを妨げる問題と判断する前に、それらがテスト専用であることを確認してください。
ライセンス交換 Worker 環境
テスト用と本番用の交換サービスでは、それぞれ異なる Wrangler ファイル、Worker 名、シークレット、レート制限名前空間を使用します。LEMON_TEST_MODE は各ファイルで固定されており、シークレットとして入力する値ではありません。対応する Lemon モードの値だけを入力してください。テスト用のストア/商品/バリアント ID を本番用に、またはその逆に再利用しないでください。
# Test secrets (repeat for LEMON_PRODUCT_ID, LEMON_VARIANT_ID,
# LEMON_API_KEY, and AKC_ED25519_PRIVATE_KEY)
npx wrangler secret put LEMON_STORE_ID --config workers/license-exchange/wrangler.test.jsonc
npx wrangler deploy --dry-run --config workers/license-exchange/wrangler.test.jsonc
npx wrangler deploy --config workers/license-exchange/wrangler.test.jsonc
# Live secrets (repeat for the same five names, using live Lemon values)
npx wrangler secret put LEMON_STORE_ID --config workers/license-exchange/wrangler.live.jsonc
npx wrangler deploy --dry-run --config workers/license-exchange/wrangler.live.jsonc
npx wrangler deploy --config workers/license-exchange/wrangler.live.jsonc
テスト用 Worker は api-key-case-license-exchange-test、本番用は api-key-case-license-exchange です。公開済み CLI の LICENSE_EXCHANGE_URL を置き換えられるのは、デプロイ済みの本番 HTTPS エンドポイントだけです。完全なセットアップ一覧とすべてのシークレット設定コマンドについては、workers/license-exchange/README.mdを参照してください。
ステータスとロードマップ
現在のソース候補:v0.9.2(安定版前)。直前の v0.9.1 リリースは 2026-09-14(JST)に npm で公開されました。セキュリティ修正は、公開済みの最新の安定版前リリースに対してのみ提供されます。コード補完やポータブルなテストを行っても、実際の Agent ホスト、Windows/macOS のダイアログ、プロバイダーアカウントでの受け入れが確認されたことにはなりません。リリースチェックリスト、検証記録、変更履歴を参照してください。外部ユーザーが実際のプロジェクトで検証するまでは、バージョン 1.0 はリリースせずにおきます。
- フェーズ 1:ローカルスキャンと安全なファイル生成
- フェーズ 2:OS シークレットストアへの保存/確認/一覧表示/削除(
user/projectスコープ) - フェーズ 3:公式 CLI を介した Cloudflare/Vercel/GitHub へのデプロイと、
targets診断 - フェーズ 4:オプションの MCP サーバー(
api-key-case mcp)。同じステータス限定の操作を Agent ホストに公開します - フェーズ 5:Lemon Squeezy 購入キーの交換と、それに続く
deploy用オフライン Pro ゲート(ライセンスを参照) - フェーズ 6A/B/C/D/E:バージョンを厳密に指定した Agent Control Plane、Windows/macOS Human Plane によるシークレット入力、実行スナップショットに紐付けた一度限りの高リスク操作承認、デフォルト拒否の自動ポリシーを備えた永続的な宛先信頼、そしてエージェントが削除を提案することはできても実行を完了することはできない削除/クリーンアップのライフサイクル。Linux Human Plane とデプロイの実行は対象外です
ライセンス
API Key Case 0.9.1 の製品コードは、Elastic License 2.0(Elastic-2.0)に基づくソース公開です。deploy を含む完全なソースは、引き続き公開されています。agent-init が生成する管理対象の指示テキストのみ、ユーザーのリポジトリのライセンスを変更せずに保持、編集、共有できるよう、標準の 0BSD ライセンスに基づいて利用できます。API Key Case 0.9.0 は、同リリースに同梱された MIT ライセンスに基づいて引き続き利用できます。正確な適用範囲については、LICENSE、0BSD の本文、NOTICEをご覧ください。
製品サポートと貢献に関するガイダンス:SUPPORT.md · CONTRIBUTING.md。商取引に関する開示:利用規約 · プライバシー · 返金 · 特定商取引法に基づく表記.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
