Claude CodeのAikidoプラグインでSAST・シークレット検出をかける
Aikido公式プラグインの入れ方、setup・scan・issues・pr-commentsの4スキルの役割、認証方式の食い違い、生成コードを再スキャンさせる運用をまとめます。
AikidoのプラグインをClaude Codeに入れると、セッション中に書いたり直したりしたコードに対して、SAST(静的アプリケーションセキュリティテスト)とシークレット検出、IaC(Infrastructure as Code)の設定ミス検出をかけられます。実際のスキャンはプラグインが同梱するAikido MCPサーバーが担当します。Claude Codeは結果を読み、修正して、もう一度スキャンを依頼する役です。
入れ方は短く済みます。迷うのは認証です。紹介ページと設定ガイドで説明が分かれているため、先にそこを突き合わせます。
入れる前に知っておく前提と、認証方式の食い違い
マーケットプレイスの紹介ページには、Node.js 18以上とAikidoのAPIキーが必要と書かれています。一方、Aikidoのヘルプにある設定ガイドは、ブラウザでログインする方式を標準にしています。
| 資料 | 認証の説明 | Node.jsの下限 |
|---|---|---|
| 紹介ページ | 認証の説明/aikido:setup your-api-key でAPIキーを設定 | Node.jsの下限18以上 |
| 設定ガイド | 認証の説明/aikido:setup を引数なしで実行し、ブラウザでログイン | Node.jsの下限記載なし |
| プラグインのsetupスキル | 認証の説明引数なしならログイン用ツールを呼ぶ方式で案内 | Node.jsの下限18.19.0以上 |
| スキル同梱のreference.md | 認証の説明APIキーを渡す方式と、設定後の再起動を案内 | Node.jsの下限記載なし |
プラグイン本体のsetupスキルは、最初に node --version を実行します。18.19.0未満なら、そこで止まってNodeの更新を案内する作りです。紹介ページの「18以上」だと18.0〜18.18でも足りるように読めますが、実際に弾かれるのは18.19.0未満です。迷ったら高いほうの18.19.0を基準にしてください。
認証は2通りあると考えると整理できます。
- 手元のマシンで対話的に使うなら、ブラウザログイン(引数なしの
/aikido:setup) - CI/CDやリモートサーバーのようにブラウザを開けないなら、個人アクセストークン(PAT)
PATはAikidoのSettings → Integrations → IDE → MCPで作ります。使い方は、/aikido:setup <PAT> を実行するか、環境変数 AIKIDO_API_KEY を設定してから claude を起動するかのどちらかです。設定ガイドは、手元で使うならブラウザログインのほうが簡単だと書いています。
インストールからログインまで
設定ガイドの手順は、公式マーケットプレイス経由の3段階です。
インストールからログインまでの流れ
- 1
プラグインを入れる
/plugin install aikido@claude-plugins-officialを実行します。 - 2
読み込みと再起動
/reload-pluginsで有効化し、スキルを読み込むためにClaude Codeを一度終了して起動し直します。 - 3
ログインする
/aikido:setupを引数なしで実行します。ブラウザが開くので、Aikidoにログインします。
/plugin install aikido@claude-plugins-official
/reload-plugins
/aikido:setup設定ガイドによると、ログインが済むとトークンがClaude Codeの設定に保存され、MCPサーバーも自動で登録されます。/reload-plugins は、起動中のセッションにプラグインを読み込み直すコマンドです。
プラグインのリポジトリを見ると、.mcp.json に npx -y @aikidosec/mcp@1.0.32 が書かれています。MCPサーバーのバージョンが固定されているので、npx でパッケージを取りに行く以上、初回起動にはネットワークが必要です。プラグイン自体のバージョンは1.2.12、ライセンスはMITです。
setupスキルがやっていること
setupスキルの中身はそのまま読めます。流れは次のとおりです。
node --versionでバージョンを確認する- MCPのログイン用ツールを引数なしで呼ぶ。有効なトークンがあれば「Already signed in」が返り、そこで終わる
- 未ログインならサインインのURLが返る。スキルはそのURLを加工せずに見せる
- ブラウザでの操作が済んだと伝えると、同じツールをもう一度呼んで確認する
アカウントを切り替えたいとき、あるいは再認証したいときは、強制再認証の引数付きでログイン用ツールを呼ぶ分岐が用意されています。リージョンは、サインインURLが自動で振り分けます。EU・US・ME・AUのどれかを自分で指定するのは、自動の振り分け先が違っていたときだけです。
「packages are not installed」のようなエラーが出たときは、プラグインの対処記事で切り分けられます。
4つのスキルの役割
プラグインのリポジトリにあるスキルは、setup・scan・issues・pr-comments の4つです。issues フォルダのスキルは、frontmatter上の名前が aikido-issues になっています。呼び出しはスラッシュコマンドのほか、自然文でも通ります。
| スキル | 受け持つ作業 | 使うもの |
|---|---|---|
| setup | 受け持つ作業Node.jsの確認、ログイン、MCPの疎通確認 | 使うものAikido MCPのログイン用ツール |
| scan | 受け持つ作業生成・追加・変更したファイルのSAST・シークレット検出 | 使うものパス指定のスキャン、全文送信のスキャン |
| issues | 受け持つ作業AikidoのフィードにあるIssueの一覧・件数・詳細 | 使うものIssue一覧ツール |
| pr-comments | 受け持つ作業PR/MRに付いたコメント(AikidoのスキャンやCIの結果を含む)の取得 | 使うものgh / glab / az(MCPは使わない) |
最後の pr-comments だけは、Aikido MCPを呼びません。スキル本文に、Aikido MCPのツールでこの依頼を満たしてはいけないと明記されています。使うのはリモートのホスト名で判別したGitHub・GitLab・Azure DevOpsのCLIです。GitHubなら次のコマンドです。
# 現在のブランチのPRのコメントを一覧する
gh pr view --comments
# 番号と別リポジトリを指定する場合
gh pr view 123 --comments --repo org/repoCLIが入っていなければ、スキルは自分で入れずにユーザーへ伝え、許可を得てから入れる決まりです。ログインが必要なときは、対話的な操作になるのでコマンドを見せてユーザーに実行してもらいます。BitbucketやカスタムドメインのGit(ホスト名が3種類のどれにも当たらないもの)は対象外で、プラットフォームを聞き返します。
scanスキルの動き: 修正と再スキャンを最大3回
プラグインの価値は、スキャンそのものより「直して、また走らせる」ループを定義している点にあります。scanスキルの本文は、次の順で動くよう指示しています。
- このセッションで生成・追加・変更したファイル(またはユーザーが挙げたファイル)を洗い出す
- ディスク上にあるファイルは、パスだけを渡すツールでスキャンする。中身を先に読み込まない(サーバーが自分で読むので、内容を渡すとコンテキストを無駄にするだけ)
- まだ保存していない提案差分や貼り付けたスニペットは、全文を渡す別のツールに回す
- 1リクエストは50ファイルまで。超える場合は分割する
- 指摘があれば、タイトル・説明・重大度・ファイルの場所・行番号を説明し、Aikidoの修正指針に沿って直す
- 直したら同じツールで再スキャンする。直した内容が安全だと説明できる(残りが誤検知など)ならそこで止めて報告してよい。そうでなければ最大3回まで繰り返し、残った指摘はユーザーに報告する
紹介ページにも「最大3回繰り返す」「1リクエスト50ファイルまで」と同じ数字が出ています。
この3回という打ち切りには意味があります。直しても直らない指摘や、検出ルール側の誤検知を相手に、無限に書き換えを続けることを防ぐ装置です。3回で止まったときは、止まった理由と残った指摘が報告されます。そこから先は人が判断する場面です。
スキャンの粒度を変える頼み方
自然文では次のような依頼が使えます。紹介ページの例は「scan my code for security vulnerabilities」と「check for exposed secrets in the files I changed」です。
/aikido:scan
このブランチで変更したファイルをAikidoでスキャンして、指摘を直してくださいここで日本語の依頼がどこまで通るかは、紹介ページにも設定ガイドにも書かれていません。スキルの description には「Aikido」「security scan」「SAST」といった語が呼び出しの目印として入っているので、依頼文にこれらの語を混ぜると狙ったスキルが動きやすくなります。まず /aikido:scan で起動し、動作を見てから言い回しを崩すと切り分けられます。
issuesスキル: Aikidoのフィードを引く
scan が「手元で書いたコード」を見るのに対し、issues はAikidoのダッシュボードに溜まっているIssueを引くスキルです。SAST・シークレット・IaCに加え、オープンソース依存関係、クラウド、コンテナ、EOL、ライセンス、マルウェア、サーフェスモニタリングなどの種別を扱えます。スキル本文が挙げる issue_types の値は次の14種です。
open_source / leaked_secret / cloud / sast / iac / surface_monitoring / malware / eol / mobile / docker_container / cloud_instance / scm_security / license / ai_pentest
絞り込みに使える条件は、リポジトリ名・ブランチ名・チーム名などのスコープ、SLA超過(out_of_sla)、SLA期限が近いもの(sla_due_soon)、そしてIssue ID指定の詳細取得です。
- 一覧は1ページ25件で、ページ番号は0から始まる。次のページがあるときはその旨を伝える決まり
issue_idを渡すと、その1件だけの詳細が返る。ほかの絞り込みとは組み合わせない- 表示は
Issue #1: …に続けてID・種別・重大度・修正方針を並べる固定形式
頼み方の例を挙げます。
Aikidoで、このリポジトリの漏えいしたシークレットを一覧にして
Aikidoで、SLA超過のSASTのIssueだけ出して
Aikidoの Issue ID 12345 の詳細を見て、直し方を提案してscan が出す指摘は「いま書いたコード」への指摘で、issues が出すのは「既にAikido側に登録されているもの」への指摘です。見ている範囲が違うので、片方で0件でももう片方で出ることがあります。
運用に落とす: CLAUDE.mdで「生成後にスキャン」を習慣化する
scanスキルのdescriptionには「コードを生成したら必ずAikidoスキャンを走らせる」という趣旨の指示が入っています。ただし、スキルが自動で呼ばれるかどうかはモデルの判断に依存します。チームで確実に回したいなら、プロジェクトの CLAUDE.md に1節足しておくと、呼び忘れを減らせます。
## セキュリティスキャン
- コードを新規作成・変更したら、作業完了を報告する前に /aikido:scan を実行する
- 指摘が出たら修正し、同じスキャンで再確認する(最大3回)
- 3回で解消しない指摘は、直さずに内容と理由を報告する
- シークレットの指摘は、値をコミットせず環境変数への切り出しを提案する最後の1行は、この記事で足した運用ルールの一例です。プラグインの仕様ではありません。
CIや無人実行では、ブラウザログインが使えません。その場合はPATを環境変数で渡す構成になります。
export AIKIDO_API_KEY=your-token-here
claudePATは漏れると困る資格情報です。.env やシェルの履歴に残さず、CIのシークレット機能で渡すのが基本です。
他のスキャナーと並べたときの位置
security-reviewとCodeQLの違いで扱ったように、Claude Code標準の /security-review はモデルがコードを読んで指摘する方式です。Aikidoの設定ガイドは、AIによる自己レビューは完全ではないとしたうえで、固定の検出ルールによる決まったチェックを足せると説明しています。両者は競合するというより、見る材料が違います。
動いているアプリに対する診断が目的なら、NightVisionのDASTのように実行時に攻撃を試す手法が別にあります。同じセキュリティ系の導入手順としては、Opsera DevSecOpsプラグインも比較対象になります。
つまずきやすい点
プラグインの読み込みコストが気になるときは、claude plugin detailsの記事にある測り方で、スキルとMCPが占める量を見られます。
- スキルが見つからない: インストール後に再起動していない可能性が高い。設定ガイドは、スキルを読み込むための再起動を求めています
- MCPサーバーが起動しない: Node.jsが18.19.0未満、または
npxがパッケージを取得できていない。まずnode --versionを見る - APIキーでの設定が通らない: 紹介ページと設定ガイドで手順が違う。設定ガイドが標準とする、引数なしの
/aikido:setupによるブラウザログインを先に試す - 50ファイルを超える変更: 1回で通らないので、分割して複数回スキャンされる。巨大な差分は先にディレクトリ単位へ絞ると回数を抑えられる
- PRのコメントが取れない:
ghなどの未導入か未ログイン。pr-commentsは自分では入れず、確認を求めてくる
まとめ
AikidoプラグインはSAST・シークレット・IaCのスキャンをClaude Codeの作業ループに組み込みます。scan は修正と再スキャンを最大3回まで繰り返し、issues はAikidoの既存フィードを引き、pr-comments は gh などで既存のPRコメントを読みます。
導入で決めることは2つです。認証をブラウザログインにするかPATにするか、そして「生成後に必ずスキャン」を CLAUDE.md に書くかどうかです。紹介ページのAPIキー方式は設定ガイドと記述がずれているので、手元ならログインから始めると迷いません。
よくある質問
Aikidoのアカウントなしで使えますか
プラグインの紹介ページには、Aikido APIキーが必要と書かれています。設定ガイドの標準手順もAikidoへのログインです。使うにはAikidoのアカウントを先に作ります。