チームに新しい AI agent skill を入れようとしている。README はきちんと書かれている。GitHub stars も少なくない。スキャナーは赤信号を出していない。デモ動画を見ると、ちょうど今週詰まっていたワークフローを解いてくれそうに見える。

このとき起きやすい錯覚がある。スキャナーが止めなかったのだから、入れてよいはずだ、という錯覚だ。

しかし AI agent skill のリスクは、インストールの瞬間だけに隠れているとは限らない。本当に影響を出せる場所は、agent に呼び出された後にある。ファイルを読めるのか。ネットワークへ出られるのか。token を取得できるのか。結果をプロジェクトへ書き戻せるのか。見えない手順の中で、データを外へ持ち出せるのか。

最近の SkillCloak 関連研究は、ひとつの注意点を示している。インストール前の静的スキャンだけでは、実行時に初めて展開される行動を見逃す可能性がある、という点だ。研究で触れられている self-extracting packing、特定ディレクトリのスキップ、実行時の payload 復元といった手法の要点は、特定の論文がどれほど驚くべきかではない。より長く続く問題をはっきりさせたことにある。第三者製 skill について問うべきなのは、「スキャナーを通ったか」だけではなく、「動き出したときに何へ触れることを許すのか」だ。

このミニレッスンで扱う詰まりどころはここである。AI agent skill をインストールする前に、スキャナーが見落としやすいリスクをチームはどう確認すればよいのか。

In this lesson

  1. なぜスキャンを通過してもそのままインストールしてはいけないのか
  2. AI agent skill インストール前の go/no-go 表
  3. 分離した試走で runtime 観察を補う方法
  4. チームが明日から足せる最小の承認手順
  5. AI に整理を手伝わせるための handoff prompt

skill を「agent が自分の代わりに実行する外部メンバー」として見る

agent は、まず「数ステップの作業を自分で連続実行する AI アシスタント」と理解すればよい。skill は、そのアシスタントが一時的に覚える一組のツール、指示、またはワークフローのようなものだ。

問題は、多くのチームが第三者製 skill を審査するとき、まだ一般的なパッケージを見る習慣のまま止まっていることだ。

  • repo の出所が信頼できるかを見る。
  • scanner を一度実行する。
  • README が妥当かを見る。
  • インストール手順に明らかに怪しい内容がないか確認する。

これらはすべて必要だ。しかし十分ではない。

一般的なパッケージのリスクは、多くの場合、インストール、build、import、または特定関数の実行に集中する。AI agent skill にはもう一層ある。agent が「次の手順でこれが必要だ」と判断したときに初めて呼び出されることがあり、その呼び出し時にはタスク文脈、ファイル、ツール権限、ユーザーの意図が一緒に渡る。つまり skill は単なるコードではない。一連の固定された受け渡し手順であるワークフローの中に入る。

まだ agent の認可境界を分解していないなら、先にこちらを見てもよい:AI agent の認可を確認する四つの問い:身元、権限、理由、結果。そちらは agent が行動する前に何を問うかを扱う。この記事では、skill をインストールする前に、その環境へ入れてよいかをどう決めるかに焦点を置く。

広告

スキャナーは手がかりを探し、承認プロセスはそのリスクを引き受けられるかを決める

スキャナーは重要だ。prompt injection、データ流出、権限昇格、ツール誤用、MCP リスクなど、よくある問題を見つける助けになる。MCP は、まず「AI ツールが同じ方式でデータやツールにつながるためのプロトコル」と理解すればよい。

ただしスキャナーが比較的得意なのは、次のような問いへの回答である。

  • repo の中に怪しい文字列があるか。
  • ファイル構成の中に、よくある悪性パターンがあるか。
  • prompt が元の指示を上書きしようとしていないか。
  • 機密ファイルの読み取りやデータ送信を明らかに求めていないか。

一方で、スキャナーだけでは答えにくい問いもある。

  • この skill は、あなたのプロジェクト文脈では実際にどのデータへ届くのか。
  • agent に連続で三手順呼び出されたあと、新しいリスクを組み合わせて作らないか。
  • 書き込み権限が本当に必要なのか、それとも読み取りだけで足りるのか。
  • ネットワーク接続先を制限できるのか。
  • 失敗したとき、誰が止め、token を回収し、一時データを消すのか。

だからこそ、「スキャナー通過」は入口条件として扱うのがよく、最終判断には向かない。同じように、セキュリティスキャナーが問題を指摘したからといって、ツールに本番設定を自動で書き換えさせるべきではない。この文脈は次の記事ともつながる:AI セキュリティスキャナーが修正を促しても、人が変更可否を決める。同じ考え方を skill のインストール前に置くなら、こうなる。スキャナーは注意点を示せるが、判断には人が責任を持つ。

AI agent skill インストール前の go/no-go 表

下の表の使い方は単純だ。各行で「いま分離した試走に進めるだけの条件があるか」を答える。どれか一行でも no-go に落ちるなら、日常の作業環境には入れない。conditional go なら、先に制限を足してからサンドボックスで試走する。

確認項目Go:分離した試走に進めるConditional go:制限を足してから試走するNo-go:今日は入れない
出所と保守状況出所 repo、公開者、バージョン履歴を追跡できる。直近の更新や issue 対応から保守が続いていると分かる出所は信頼できるが保守の手がかりが弱い。まず commit hash を固定し、浮動バージョンを使わない圧縮ファイルだけ、匿名の出所、バージョン追跡不能、または README と実ファイルの差が大きい
権限要求skill の説明が、読む必要のあるディレクトリや使うツールを明確に列挙している。最小権限でタスクを完了できる権限要求は大きめだが、読み取り専用ディレクトリ、単一のテスト repo、使い捨て token で絞れる最初から全プロジェクト書き込み、システムレベル shell、ブラウザのログイン状態、長期 token を求め、合理的な理由がない
機密データ境界試走データを匿名化できる。.env、鍵、顧客の原文、社内契約書を読まなくてよい一部の実データが必要。まず 20 件以内のマスク済みサンプルを作り、secret ディレクトリの読み取りを禁止するproduction secret、顧客の完全データ、マスクされていない認証情報を直接読まないと動かない
ネットワーク挙動予想される接続先が 3 件未満で、allowlist で制御できる。オフラインモードでも主機能は完了する外部 API 接続が必要。まずドメインを制限し、request metadata を記録し、payload 全文は送らない不明な endpoint に接続する、動的に実行内容をダウンロードする、またはデータ送信先の説明を拒む
実行サンドボックスcontainer、一時作業ディレクトリ、またはテスト VM で動かせる。試走終了後にファイルと token を完全に消せるローカルでしか動かせない。まず新規ユーザー、読み取り専用 mount、永続認証情報なしの環境を作るエンジニアの主作業端末、ログイン済みブラウザ、本番 workspace でないと動かない
観測可能性ファイル読み書き、ネットワーク接続、ツール呼び出し、出力要約を記録できる。log に機密全文を含めない一部のイベントしか記録できない。まず wrapper または代理層を足し、少なくとも時刻、ツール、対象パス、接続ドメインを記録する実行後に最終回答しか見えず、何を読み、どこへ接続し、何を変更したか分からない
失敗時の処理明確な owner がいる。試走中に異常があれば、15 分以内に token を取り消し、作業ディレクトリを削除し、影響範囲を報告できるowner は決まっているが、撤回手順を演習していない。先に一度 dry-run し、rollback 経路を確認する後始末の責任者がいない。問題が起きたら「みんな、もう使わないように」で済ませるしかない

この表では、あえて「スキャン結果」を表の外に置いている。理由は、スキャナーは先に実行すべきであり、通らなければ表に進む必要もないからだ。ただし表に入った後の判断軸は、「きれいに見えるとしても、実行時に何へ触れるかを自分たちは分かっているか」へ移る。

30 分で分離した試走を一度行う

dry-run は「先に試すが、実際にはデータ変更や公開をしない」ことだ。第三者製 skill では、dry-run はタスクを完了できるかを見るだけではない。どう完了するかを観察するためのものでもある。

言い換えると、この節は追加のテストではない。スキャナーだけでは見えない runtime 境界を補うためのものだ。skill が実際に動いたとき、何を読み、どこへ接続し、どのツールを使い、データが最終的にどの出力へ出るのかを見る。

次の順番で、小さな確認を一度実行できる。

1. 本物らしい偽タスクを用意する

最初のテスト対象に production プロジェクトを使わない。よりよい方法は、小さな fixture を用意することだ。

  • 10〜20 個のファイルを用意し、実際の repo に似た構造にする。
  • 2〜3 個の境界ケースを意図的に入れる。たとえば偽の .env、偽の顧客データ、偽の API key。
  • 「changelog を整理する」「設定ファイルの不一致を見つける」など、明確なタスクを 1 つ置く。
  • secrets/ ディレクトリを読んではならない」など、明確な禁止事項を 1 つ置く。

こうすれば、skill がタスクを終えたかだけでなく、触れてはいけない場所に触れたかも見られる。

2. 権限を三層に分け、最初から全開にしない

初回の試走では、次の順番で権限を開くのがよい。

  1. 第1層: 読み取り専用ファイル権限、ネットワークなし。
  2. 第2層: 読み取り専用ファイル権限、制限されたドメイン接続あり。
  3. 第3層: 必要な場合にだけ書き込み権限を加える。ただし書き込み先は output/ または一時ディレクトリに限る。

skill が第一層で主なタスクを完了できるなら、第三層へ上げない。権限昇格には理由が必要だ。インストール手順に「full access 推奨」と書いてあるからといって、そのまま従うべきではない。

3. 四種類の runtime シグナルを記録する

runtime は、まず「プログラムが実際に動いている時間帯」と理解すればよい。分離した試走では、少なくとも次の四種類のシグナルを記録する。

  • ファイル:どのパスを読んだか。どのパスへ書いたか。forbidden directory に触れたか。
  • ネットワーク:どのドメインへ接続したか。request サイズが異常ではないか。動的に内容をダウンロードしたか。
  • ツール:どの shell、ブラウザ、API、MCP tool を呼んだか。順序は妥当か。
  • 出力:最終回答が知るべきでないデータを引用していないか。社内内容を外部サービスへ貼っていないか。

最初から重いセキュリティ基盤を作る必要はない。小さなチームなら、container log、proxy log、ファイルシステム audit、agent tool-call log を組み合わせて、第一版の観測を作ればよい。重要なのは、試走のあとで見返せる痕跡を残すことだ。

4. 結果を「使えそう」ではなく go/no-go にまとめる

試走後、Slack に「見た感じ OK」とだけ残して終わらせない。結果は次の三状態にまとめる。

  • go:限定されたワークフローへ入れてよい。同じ権限制限と監視を維持する。
  • conditional go:特定 owner、特定 repo、特定タスクだけで使う。2 週間以内に再確認する。
  • no-go:インストールしない。理由を残し、次に別の同僚が同じ道をたどらないようにする。

conditional go が多すぎるなら、その skill はまだチーム共用ツールに向いていない可能性が高い。個人の実験環境には置けるかもしれないが、正式なワークフローへ入れるべきではない。

よくある誤り:skill 同士の衝突をインストール後に処理すればよい問題だと考える

多くの skill リスクは、単一の skill だけで起きるのではない。既存ツールと組み合わさった後に初めて現れる。

たとえば次のような場合だ。

  • ある skill は issue の整理だけを担当し、見た目には読み取り権限だけで足りる。
  • 別の skill は issue に基づいて PR を自動作成する。
  • agent が同じワークフローの中で両方を連続して呼ぶと、読み取り、判断、書き込みがつながる。

このときリスクは単独機能ではなく、出所設計と権限の受け渡しにある。runtime 境界の視点では、「この skill 単体が越境するか」だけが問題ではない。「agent が複数の skill を連続して呼んだあと、読み取り、判断、書き込み、ネットワーク接続が新しい経路としてつながらないか」も問題である。チームがすでに複数の skill をため始めているなら、こちらもあわせて読むとよい:衝突の根本解決は仲裁ではなく、出所設計にある。インストール前の確認は、「この skill は安全か」を見るだけではない。「既存の agent 環境に入ったとき、他の能力と組み合わさって新しい経路を作らないか」を見ることでもある。

明日から足せる最小の一手

いま完全なプロセスがなくても、セキュリティ基盤が完成するまで待つ必要はない。明日はまず、この一手を足す。

誰かが第三者製 AI agent skill をインストールしたいとき、必ず 6 行のインストール申請カードを添える。

  1. 出所と版: skill の出所 URL、バージョン、または commit hash。
  2. 単一タスク: この skill が解決する単一タスク。
  3. データ権限: その skill が読む必要のあるディレクトリとツール。
  4. ネットワーク要件: ネットワーク接続が必要か。必要なら予想ドメインを列挙する。
  5. 試走データ: 初回 dry-run に使う偽データセット。
  6. 異常時の後始末: 異常時の owner と、token 取り消しまたは停止方法。

owner とは「最後の判断と後始末に責任を持つ人」だ。このカードは美しくなくてよい。ただし次の人が読んで分かる必要がある。なぜ入れるのか。何を与える予定なのか。越境したときに誰が処理するのか。

このカードがあれば、スキャナーは承認プロセスの代替ではなく、承認プロセスの一部になる。

生活四コマ

四コマ漫画:新しい AI agent skill を検査トレイに置き、出所と権限を確認し、サンドボックスで試走し、最後に owner が go、conditional go、no-go を決める。

  1. 第三者製 skill は、日常ワークフローに入れる前に検査する外部能力として扱う。
  2. インストール前に出所、バージョン、権限、機密データ、ネットワーク要件を確認する。
  3. 偽データと分離環境で試走し、ファイル、ネットワーク、tool call、出力の越境を観察する。
  4. 結果は go、conditional go、no-go にまとめ、owner が無効化、token 失効、制限追加を担当する。

AI 整理カード

この判断表を自分の次の一手に落とす このプロンプトは、AIに先に背景を聞かせてから判断させる。記事の要約ではなく、作業フローの確認に使う。

このBMCミニレッスンを自分の状況に当てはめたい:AI agent skill はスキャンを通過したのに、インストール前になぜ実行境界をもう一度見るべきなのか

この記事が扱う具体的な問題:第三者製の AI agent skill がスキャンを通過しても、実行時まで安全とは限らない。このミニレッスンでは、出所、権限、サンドボックス、ネットワーク、機密データの境界を go/no-go 表で確認する。
記事URL:https://boosterminiclass.com/ja/posts/ai-agent-skill-install-runtime-risk-checklist/

記事を要約するだけにしないでほしい。まず、次の3点を確認する質問をしてほしい。
1. いま扱っている実際のワークフローまたは判断は何か。
2. その流れに関わるデータ、権限、アカウント、費用、外部実行は何か。
3. 今日ほしいのは、停止判断、試用チェックリスト、引き継ぎテンプレート、リスク分級のどれか。

そのうえで、この記事固有の枠組みで私の状況を確認してほしい:

出力してほしいもの:
- 進める、範囲を絞って試す、一度止める、のどれかを一文で判断する。
- 枠組みを私の状況に当てはめ、準備済み/証拠不足/人間確認が必要、に分けた表。
- 今日できる最小の一手。
- 担当者、ログ、戻し方、人間レビューが必要な箇所。

出力は草案として扱う。実行前に、データ、権限、責任範囲を人が確認する。

広告

Share

このミニクラスを共有

このミニクラスが仕事の詰まりをほどく助けになったら、AI の使い方を考えている人にも共有してください。

参考資料

arXiv:Cloak and Detonate: Scanner Evasion and Dynamic Detection of Agent Skill Malware — https://arxiv.org/pdf/2607.02357(2026-07-02)

The Hacker News:SkillCloak Lets Malicious AI Agent Skills Evade Static Scanners with Self-Extracting Packing — https://thehackernews.com/2026/07/new-skillcloak-technique-lets-malicious.html(2026-07-06)

NVIDIA SkillSpector:SkillSpector README — https://github.com/NVIDIA/SkillSpector(2026-07-06)