Keyward について
KeywardはAIコーディングエージェント向けの、ローカルで暗号化されたシークレット仲介ツールです。エージェントが名前でキーを要求し、OS標準ダイアログで承認すると、値をモデルに返さずプロジェクトファイルへ注入します。
主な機能
- 01ローカル暗号化ボルト
- 02名前によるキー要求
- 03OS標準ダイアログでの承認
- 04プロジェクトファイルへのキー注入
- 05CLIでの管理とインポート
活用シーン
- 01チャット履歴へのキー混入防止
- 02複数プロジェクトでのキー再利用
- 03.envファイルからのキー取り込み
MCP 対応
`list_keys` と `request_key` ツールを備えた標準stdio MCPサーバーを提供します。クライアントが名前でキーを要求し、承認後に対象ファイルへ注入します。MCPの応答には確認情報のみを含みます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
keyward
API キーを一度保存するだけ。あらゆる AI ツールが、値を一度も見ることなく、あなたの承認を得てキーをリクエストできます。
keyward は、オープンソースのローカル暗号化AI コーディングエージェント向けシークレットブローカーです。API キーをチャットに貼り付けたり(コンテキストやトランスクリプトに漏れる可能性があります)、新しいセッション、プロジェクト、IDE のたびに同じキーを再入力したりする代わりに、暗号化された 1 つのボールトにキーを保管します。Claude Code、Cursor、Gemini CLI、またはMCP対応ツールがキーを必要とすると、名前でリクエストし、OS のネイティブプロンプトでそのリクエストを承認すると、keyward はプロジェクトにそのキーだけを注入します。モデルに値が渡ることはありません。
問題点
- AI チャットへのキー漏えい — キーをプロンプトに貼り付けると、コンテキスト、トランスクリプト、ログに残ります。
- 再入力の手間 — 新しいセッション、プロジェクト、IDE、マシンのたびに同じキーを入力します。
- 散在する
.envファイル — 信頼できる情報源が 1 つもなく、どこにどのキーがあるのか分からなくなります。 - 制御不能 — エージェントが必要なキーだけでなく、すべてのシークレットを一度に読み取ったり取得したりできます。
- ツールへのロックインによる煩わしさ — IDE やモデルを切り替えるたびに、すべてのキーを設定し直す必要があります。
仕組み
AI tool ──request_key("STRIPE_KEY", project)──▶ keyward ──native approval──▶ you
│ approved
◀── "injected STRIPE_KEY → ./.env" ─────────┘ (value never shown to the model)
- ボールト — ageで暗号化されたファイル(
~/.keyward/vault.age、0600)。マスターキーはOS のキーストア(macOS Keychain/Windows Credential Manager/Linux libsecret)に保存され、ディスク上に平文で保存されることはありません。 - 2 つのインターフェース — AI ツール向けのMCP サーバー(
list_keys、request_key)と、それ以外のすべてに使える**keywardCLI**です。 - 帯域外承認 — 承認ダイアログはエージェントのストリーム内ではなく、keyward 自身が表示するため、エージェントが自動承認することはできません。1 回だけ承認、セッション中は承認、または拒否を選択できます。
- 設計上、値を扱わない —
list_keysが返すのは名前のみです。request_keyが返すのは確認結果です。監査ログには判断が記録されますが、値が記録されることはありません。
インストール
# Homebrew (macOS / Linux)
brew install arturayupov/tap/keyward
# Scoop (Windows)
scoop bucket add arturayupov https://github.com/arturayupov/scoop-bucket
scoop install keyward
# Go
go install github.com/arturayupov/keyward/cmd/keyward@latest
ビルド済みバイナリ(macOS/Windows/Linux、amd64+arm64)も各リリースに添付されています。OS ごとの注意事項(Linux libsecret を含む)はINSTALL.mdを、うまく動作しない場合はTROUBLESHOOTING.mdを参照してください。
クイックスタート
# 1. create the encrypted vault (master key goes into your OS keystore)
keyward init
# 2. import keys you already have scattered in .env files
keyward import ~/projects
# 3. point your AI tool at keyward's MCP server (see below), then just ask:
# "use my STRIPE_KEY for this project" → approve the prompt → done
MCP サーバーとして使う
keyward は標準的なstdio MCP サーバーで、公式 MCP サーバーと同じ方法で登録できます。手順は 2 つです。
1. バイナリをインストールする(初回のみ)— 上記の go install、Homebrew/Scoop(近日対応)、またはリリースのバイナリを使います。
2. AI ツールに登録する:
# Claude Code — one command:
claude mcp add keyward -- keyward serve-mcp
または設定に手動で追加します(~/.claude.json、またはプロジェクトの .mcp.json)。
{ "mcpServers": { "keyward": { "command": "keyward", "args": ["serve-mcp"] } } }
Cursor、Windsurf、Cline などの MCP クライアントでも、MCP 設定では同じ command/args 形式を使います。ツールを再起動し、キーを名前で使うよう指示してください。
「リポジトリの URL を貼り付ける」方法ではだめなのはなぜですか? MCP クライアントは設計上、GitHub のリンクからサーバーを自動インストールしません。任意のリモートコードを実行しないためです。keyward も意図的にローカルで動作します(OS のキーストアが必要で、ローカルファイルに書き込むため)。そのため、リモート/ホスト型の URL サーバーではありません。上記の 2 つの手順が、標準的で安全なインストール方法です。詳しい手順はUSAGE.mdを参照してください。
CLI リファレンス
| コマンド | 説明 |
|---|---|
keyward init | 暗号化された保管庫とマスターキーを作成します |
keyward import [root] | root 配下の .env ファイルからシークレットをプロジェクトごとにまとめてインポートします |
keyward add NAME --ns NS | シークレットを1つ追加/更新します。値は標準入力から読み取ります(.env 以外の認証情報用) |
keyward ls [--ns NS] | キー名と名前空間を一覧表示します(値は決して表示しません) |
keyward inject NAME --ns NS --into PATH | キーを1つ、対象の env ファイルに注入します(承認を求めます) |
keyward serve-mcp | stdio 経由で MCP サーバーを実行します |
セキュリティモデル
- シークレットの値が AI エージェントに返されることはありません。
request_keyは値を対象ファイルに注入し、確認結果のみを返します。 - 値が監査ログ(
~/.keyward/audit.jsonlにはツール、キー、名前空間、対象、判断が記録されます。値は記録されません)に書き込まれることはなく、ls/injectによって出力されることもありません。 - 承認は帯域外で行われます。エージェントがクリックできない、OS ネイティブのダイアログを使います。すべてのダイアログバックエンドはフェイルクローズ方式です。エラーまたはキャンセルが発生した場合は、すべて拒否されます。
- 保管庫は
ageで保存時に暗号化され、マスターキーは OS のキーストアに保存されます。
これらの不変条件は自動テストで検証されています。詳細と脅威モデルについては SECURITY.md を参照してください。
比較
| keyward | envchain | pass / sops | 1Password CLI | |
|---|---|---|---|---|
| 暗号化されたローカルストア | ✅ | ✅(Keychain) | ✅ | ✅(クラウド) |
| エージェントが名前を指定してキーをリクエスト | ✅ | ❌ | ❌ | ❌ |
| リクエストごとの人間による承認 | ✅ | ❌ | ❌ | ❌ |
| 値がモデルに届かない | ✅ | 該当なし | 該当なし | 該当なし |
| AI ツール向け MCP サーバー | ✅ | ❌ | ❌ | ❌ |
| オープンソース | ✅(MIT) | ✅ | ✅ | ❌ |
暗号化ストレージの課題は解決されています。keyward はその上に、不足していたエージェント向けの、承認を条件とするブローカーを追加します。各選択肢がより適しているケースも含む、率直な詳細比較については docs/comparisons を参照してください。
ロードマップ
詳細は ROADMAP.md を参照してください。主な内容:
- v0.2 — 署名/公証済みバイナリ(キーストアの確認プロンプトなし)、Homebrew/Scoop、生体認証による承認(Touch ID/Windows Hello)、Windows ACL の強化。
- v1.0 — トレイ/メニューバーアプリ、キーごとのポリシーと許可リスト、ローテーションのリマインダー、
target: "env"による注入。 - v2.0 — 暗号化されたマルチデバイス同期(ユーザー所有のバックエンド)、チームモード。
コントリビュート
コントリビュートを歓迎します。CONTRIBUTING.md を参照してください。セキュリティ上の問題を見つけた場合は、責任ある開示について SECURITY.md を参照してください。
ライセンス
MIT © 2026 Artur Ayupov
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。