NEW · v0.2ゼロタップ SDK —
createClient() で引数も不要AIエージェントに、
APIキーを渡さない。
インストール1回。ダイアログ0回。鍵は金庫から出ない — AIにさえも。
1// no API key in sight. 2import { createClient } from '@keyless-ai/sdk'; 3 4const ai = await createClient(); // zero args. 5 6const reply = await ai.callTool( 7 'global.openai.main', 8 'chat/completions', 9 { model: 'gpt-4o-mini', messages } 10); 11 12// ↑ Keyless injects the secret in flight.
リクエスト経路
自律エージェント時代のために設計
Claude Code
Cowork
MCP ネイティブ
すべての
tools/run クライアント0
設計上、金庫から AI エージェントに漏れる API キーの数。ポリシーではなく構造で保証。
1 install
npm install ひとつ。マシントークンはローカルで発行。パスワードもメールもブラウザも不要。
∞ aliases
プロバイダー無制限。エージェント単位でスコープ設定。セッション中でも再起動なしで失効。
100% auditable
すべての呼び出しを監査ログに記録。audit_id でリプレイも原因特定も盲点ゼロ。
仕組み
3ステップ。ダッシュボードは不要。
インストール1回で完了。あとはエージェントが API を呼ぶだけ — Keyless が透明に、監査可能に、即時失効可能に動きます。
01
インストール
SDK または エージェント用プラグインを追加。マシントークンはローカルで発行 — メール、パスワード、ブラウザタブは一切不要。
// machine token. no account.
createClient();02
呼び出し
エージェントがエイリアスでツールを呼ぶ。Keyless が飛行中にシークレットを注入し、全呼び出しを監査ログに記録。エージェントは鍵を見ない。
callTool('global.openai.main', ...);03
監査・失効
全呼び出しを監査ログに記録。任意のプロバイダーをワンクリックで失効 — 他のエイリアスは動き続ける。
// one click. rest keeps working.
revoke('global.stripe.*');Before / After
3つのフォームと dotenv から、1行の関数呼び出しへ。
他の仕組みはすべて「エージェントにシークレットを扱わせる」前提。Keyless はエージェントの世界からシークレットを消します。
Before
AIが鍵を握っている
// .env・プロンプト・チャットへのコピペ
const openai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
});
// 🚨 ログ、トレース、スクリーンショット、
// エージェントのメモリ、チームの全シェルに漏れる。1度の漏洩、1度のチャット履歴同期、1度のキーローテ — それで生成済みのエージェント・ログ・リプレイすべてが侵害されます。
After · Keyless 使用
AIは鍵を見たことがない
// .env なし。プロンプトなし。確認ダイアログなし。
const ai = await createClient();
await ai.callTool(
'global.openai.main',
'chat/completions',
{ model, messages }
);SDK はマシントークンのみ。鍵は Keyless が保持。失効は即時、ローテは自動、すべての呼び出しは監査ログに記録。
なぜ Keyless
他のシークレット管理は、結局 AI に鍵を渡している。Keyless は渡さない。
違いは「鍵をどこに置くか」ではなく「エージェントに鍵を見せるかどうか」。
| Env vars | Secrets platform | Keyless AI | |
|---|---|---|---|
| エージェントは生の鍵を見る? | 見る | 実行時に見る | 見ない |
| ユーザーが記入するフォーム数 | 1回 | 複数回 | 0 |
| セッション中にプロバイダー失効? | 不可 | 部分的 | ワンクリック |
| MCP / エージェントネイティブ? | 非対応 | 後付け | 標準対応 |
| 呼び出し単位の監査証跡? | なし | プロバイダー側のみ | 全呼び出しを監査ログに記録 |
設計思想
プロダクト全体が従う、3つの原則。
すべての機能はこの3つの帰結。どれかを破る機能はリリースしません。
原則 01
AIはシークレットを学習しない。
シークレットは Keyless の金庫内でリクエスト時に解決。エージェントが見るのはエイリアスと戻り値のみ。間には何もありません。
原則 02
インストール後、タップはゼロ。
設定画面なし、確認ダイアログなし、メール認証なし。npm install 以上の操作が必要なら、それは我々の失敗です。
原則 03
すべての呼び出しに帰属先がある。
誰が・何を・いつ・どのエージェントで・どのエイリアスで — 構造化された監査ログに記録。audit_id で先週の呼び出しも即座に再現できます。
“
AI が読める鍵は、必ず AI が漏らす鍵になる。 解決策はポリシーを厳しくすることではなく、そもそもエージェントの手に鍵を渡さないこと。
— Keyless のテーゼ
FAQ
エンジニアが本当に聞きたい質問への、率直な回答。
鍵は実際どこに保管されていますか?
Keyless の金庫内。テナント単位の鍵で保存時暗号化、外向け呼び出し時のみ隔離された実行経路で復号、定期(または任意)でローテ。エージェントは暗号化 BLOB も復号経路もアクセスできません。
エージェントが実際に見えるのは何ですか?
入力は エイリアス(例:
global.openai.main)、出力はプロバイダーのレスポンスのみ。生のシークレット、ローテ情報、内部ルーティングはエージェントのコンテキストにもログにもプロンプト履歴にも現れません。Keyless にまだ登録されていないプロバイダーでも動きますか?
動きます。HTTP API を持つプロバイダーなら、独自の認証方式でカスタムエイリアスとして登録可能。「鍵を渡さない」性質はどのプロバイダーでも成立します。
監査ログを検査・エクスポートできますか?
すべての呼び出しを監査ログに記録しています。audit_id で API から個別取得が可能。S3 / GCS へのストリーム、SIEM 連携、改ざん検知付きの署名台帳は順次対応予定です。
Keyless がダウンしたらどうなりますか?
fail closed — エージェントは不安全なフォールバックではなくエラーを受け取ります。キャッシュされたポリシーで短期作業は継続可能。シークレット自体はクライアント側にキャッシュしません。
_ 今すぐ始める
10秒で開始。
コマンドひとつ。アカウント不要。ダッシュボード不要。この文を読み終わる頃には、エージェントはもうプロバイダーを呼んでいます。
# インストール
$ npm install @keyless-ai/sdk
# 使う
const ai = await createClient();
const reply = await ai.callTool('global.openai.main', 'chat/completions', { model, messages });
# これだけ。
# 鍵はコードに、プロンプトに、ログに、一度も現れていません。