Klarion について
Klarionはコード内のシークレットを検出するツールです。ローカルルールで候補を絞り、AIモデルで実際のシークレットかを判定するため、開発者やCIワークフローに向いています。コマンドライン、コミット保護、Claude Codeフック、MCPサーバーを提供します。
主な機能
- 01キー形式、認証情報ファイル、エンコード値をローカル検出
- 02AIモデルでシークレット候補を判定
- 03スキャンとコミット保護のコマンド
- 04Claude Codeフックによる書き込みブロック
- 05CIスキャンとMCPサーバーを提供
活用シーン
- 01コミット前に新しいシークレットをブロック
- 02プルリクエストで追加コードをスキャン
- 03コーディングエージェントにコード書き込み前の確認をさせる
MCP 対応
MCPサーバーはscan_textとscan_fileを公開し、エージェントがコードの書き込みやコミット前に検査できます。モデル未設定時はKlarionのルールと候補をエージェントに渡して判定し、モデル設定時はKlarionが判定します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Klarion はコード内のシークレット、つまり API キー、パスワード、トークンを見つけます。
次の 2 段階で動作します。
- 検出。 高速なローカルチェックで、シークレットらしきものをすべて検出します。
- 確認。 AI モデルが周囲のコードとともに一つずつ読み取り、本物かどうかを判定します。
パターンスキャナーはステップ 1 までしか行わないため、テスト値、ID、ハッシュも検出します。Klarion は 本物の漏えいだけを表示します。
漏えいが発生する場所で実行します
ファイルが作成される前に書き込みをブロックする Claude Code フックです。エージェントはファイルツール経由でも Bash 経由でも回避できません。

$ klarion scan .
services/billing/client.py
[critical] stripe-secret-key 39:18 sk_l****4bQx
verdict: secret (confidence 0.96)
| stripe.api_key = "sk_l****4bQx"
Summary: 1 finding(s) across 1 file(s), 198 suppressed [1204 files scanned in 612ms]
インストール
macOS:
brew install 0x1Adi/tap/klarion
Go 1.25 以降を使う場合は、その他の環境でも次のようにインストールできます。
go install github.com/0x1Adi/Klarion/cmd/klarion@latest
または、リリースページからバイナリをダウンロードしてください。
Klarion の利用には AI モデルが必要です。次から選んでください。
| モデル | セットアップ |
|---|---|
| Anthropic(デフォルト) | export ANTHROPIC_API_KEY=... |
| OpenAI または互換モデル | export OPENAI_API_KEY=... を実行し、provider = "openai" を設定 |
| ローカルモデル。データはマシンの外に出ません | Ollama を実行し、provider = "ollama" を設定 |
| Claude Code のログイン | provider = "claude-cli" を設定 |
設定は [ai] の下の .klarion.toml に記述します。すべてのオプションはリファレンスをご覧ください。
使い方
| 目的 | 方法 |
|---|---|
| フォルダーをスキャンする | klarion scan . |
| シークレットを追加するコミットをブロックする | klarion protect |
| pre-commit フレームワークでコミットをブロックする | 以下の .pre-commit-config.yaml |
| Claude Code によるシークレットの書き込みを止める | /plugin marketplace add 0x1Adi/Klarion、/plugin install klarion@klarion を実行し、Claude Code を再起動 |
| Cline、Cursor、その他の MCP エージェントによるシークレットの書き込みを止める | 以下の MCP サーバー |
| シークレットを追加するプルリクエストを失敗させる | 以下の GitHub Action |
| すでに検出結果があるリポジトリから開始する | klarion baseline create を実行すると、新しいシークレットのみが失敗の対象になります |
# .github/workflows/secrets.yml
name: secret-scan
on: [push, pull_request]
jobs:
klarion:
runs-on: ubuntu-latest
permissions:
contents: read
security-events: write
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- uses: 0x1Adi/[email protected]
with:
anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
プルリクエストでは、PR で追加された部分のみをスキャンします。AI の回答をキャッシュするため、変更されていないコードにはコストがかかりません。検出結果はジョブログに表示されます。GitHub Code Security のないプライベートリポジトリでは、Security タブへのアップロードをスキップするために upload-sarif: "false" を追加してください。GitLab CI とすべてのオプションについてはリファレンスをご覧ください。
# .pre-commit-config.yaml
repos:
- repo: https://github.com/0x1Adi/Klarion
rev: v0.4.3
hooks:
- id: klarion
stages: [pre-commit]
stages の行がない場合、フックは無効になり、pre-commit run --hook-stage manual klarion を実行したときだけ動作します。klarion フックは初回実行時に Go で Klarion をビルドします。すでに klarion がインストールされている場合は id: klarion-system を使ってください。コミットする人は全員、モデルをセットアップする必要があります。
// ~/.cline/mcp.json, or the MCP settings of any other client
{
"mcpServers": {
"klarion": {
"command": "klarion",
"args": ["mcp"]
}
}
}
エージェントはコードを書き込む前に scan_text を呼び出し、コミットする前に scan_file を呼び出します。サーバーを自動承認するのではなく、呼び出しごとに承認してください。scan_file は指定された任意のパスを読み取るためです。モデルが設定されていない場合、サーバーは各候補と判定ルールをエージェントに渡して判定させるため、API キーは不要です。モデルを設定すると、Klarion が判定します。ツールやインストールの確認方法を含む詳しい手順は、llms-install.mdをご覧ください。
結果
Klarion は gitleaks より実際のシークレットを約 1.7 倍多く検出し、アラートの 89%が実際のシークレットでした (gitleaks:91%)。
Klarion v0.3.0 を CredData でテストしました。CredData は、Samsung がシークレットを含む行にラベルを付けた、オープンソースの実在するリポジトリ 337 件です。以下の数値は、テスト用フォルダー以外のコードを対象としています。
| Klarion | gitleaks | detect-secrets | |
|---|---|---|---|
| 検出した実際のシークレット | 35% | 21% | 35% |
| 実際のシークレットだったアラート | 89% | 91% | 34% |
| flask と rails での誤検知 | 9 | 33 | 247 |
知っておくとよいこと:
- Klarion は意図的にテスト用フィクスチャとドキュメントのサンプルを除外します。 CredData では、これらも実際のシークレットとして数えています。 その方法で数えると、Klarion は 9%、gitleaks は 46%を検出しました。
- Klarion の数値は、1 つのモデル(Claude Haiku)で 612 件を AI チェックしたサンプルに基づいています。 推定範囲は、検出率が 30~40%、実際のシークレットである割合が 82~97%です。
- CredData のラベルは、他のスキャナーが検出した結果に基づいているため、それらのスキャナーに有利に働きます。
手法とデータの詳細:benchmark/REPORT.md。
動作の仕組み
- ステップ 1 はお使いのマシンで実行されます。 既知のキー形式、
password = valueのような行、.pgpassなどの認証情報ファイル、Base64 や 16 進数に隠されたシークレットを探します。また、文字列がどれくらいランダムに見えるかもチェックします。 - ステップ 2 ではモデルに判定を求めます。 各候補は、前後数行のコードとともに送信されます。モデルは、シークレット、誤検知、不確実のいずれかを回答します。不確実な場合はシークレットとして扱います。
- 非表示にされた内容を確認できます。
klarion scan . --show-suppressedを実行してください。 - コードが送信されるのは、選択したモデルだけです。
send_secret = falseに設定すると、代わりにマスクした値が送信されます。その場合、精度は下がります。
制限事項
- モデルが必要です。 モデルがない場合、
klarion scanとコミットフックはエラーで停止します。Claude Code フックは AWS、GitHub、Stripe などのプロバイダーキーを引き続きブロックします。また、MCP サーバーは候補とそのルールをエージェントに渡して判定させます。 - API キーをお持ちでない場合は? 設定不要のホスト型判定サービスを準備中です。こちらから登録してください。
- モデルが誤判定することがあります。
--show-suppressedで非表示にされた内容を確認してください。 - シークレットを検出しますが、修正はしません。 検出されたシークレットはローテーションしてください。
- ローカルフックは
git commit --no-verifyでスキップできます。 Action を使って CI でも Klarion を実行してください。pre-commit フックはステージ済みの変更のみをチェックするため、CI ではチェック対象がありません。
詳細
リファレンス · ベンチマーク · 設計 · 変更履歴 · コントリビューション · セキュリティ
MIT © Klarion Authors
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。