コントラクトはデプロイする前に読みます。skill も、インストールする前に読むべきです。1 行で入る設定ファイルが、shell を開き、認証情報の保管場所を読み、どこかへ送り出すことがあります — 整形された README からは、そのどれも見えません。このツールは構造として危険な 21 種類のパターンを調べます。コントラクトの監査ではありませんし、そのことはすべての結果に書かれます。
危険なのはこの設定の形であって、誰かの動機についての推測ではありません。どのルールが走るかはファイル名で決まります — これらの書き方に言及しているだけの文章が、設定専用のルールを誤って発火させることはありません。
shell を MCP のコマンドとして使う。ダウンロードをそのまま shell へパイプする。/ や ~ を起点にした再帰的な削除。引数でサンドボックスや権限の確認を無効にする。一時ディレクトリから実行ファイルを参照する — そのマシン上の何もかもが書き換えられる場所から。
まだ有効な API キーや秘密鍵の材料を、共有されインストールされるファイルへコミットする。エージェントを ~/.ssh、~/.aws、.env へ向ける — 外部へ出せる能力が隣にあるだけで、それは完全な漏洩経路になります。
使い捨ての収集エンドポイント。設定に埋め込まれたチャットの webhook — 本質的には URL に書かれた書き込み権限です。ファイルの中身、環境変数、会話をどこか遠くへ送るようエージェントに指示すること。
指示の上書き。人格の再設定。HTML コメントの中に隠された命令文 — 整形された表示では見えず、モデルには完全に見えています。ゼロ幅文字と双方向上書き文字 — レビュアーが読む文書と、モデルが受け取る文書を、別々のものにしてしまいます。
ワイルドカードのコマンド許可。その時点で、ホワイトリストはホワイトリストではなくなります。そして確認なしで動くようエージェントに指示すること — それこそ、注入された指示が効くために必要な状態です。
起動のたびにインストールされ実行される、バージョン未固定のパッケージ。コミットではなくブランチから取得すること。その結果、レビューされた内容と実行される内容が、push 1 回分だけずれます。
ツール本体(スキャナー、各ダッシュボード、SAFI ワークスペース)のインターフェースは現時点では英語です。これらのページは、その中に入る前にすべてを日本語で説明するためにあります。
これは他のすべてより先に言うべきほど重要です。両者は同じサイトに住んでおり、片方のスクリーンショットがもう片方と取り違えられては決してならないからです。
これらのパターンが 1 つも現れなかった、という意味です。このファイルを安心して実行できる、という意味ではありません。
skill は、既知のパターンに 1 つも一致しないまま、完全に悪意あるものでありえます。インストールするものを、読んでください。
Solidity エンジンが相手にするのは、仕様と型システムを持つ言語です。「この関数は資金を移し、誰でも呼び出せる」は判定可能な性質です。だからスコアを出します。
このスキャナーが照合するのは、散文と JSON の中のパターンです。skill を危険にするのは意図であり、意図は判定できません。だから合格/警告/不合格を返し、スコアは意図的に出しません。
テキストは読み取られ、照合され、破棄されます。1 行の記録も、キャッシュも、それを含むログもありません。
このページは 1 度に 1 ファイル、最大 128 KB を読みます。どのルールが走るかはファイル名で決まるので、これらの書き方に言及しているだけの説明文書が誤検知されることはありません。
同じルール一式はコマンドラインツールにも同梱されています。ディレクトリ全体を走査し、API キーも不要で、どこへも何も送りません: npx saferico skill ./my-skill
MCP ツールの scan_agent_config は、まさに何かをインストールしようとしているエージェントへ同じルールを提供します — 確認がファイルを信頼したあとではなく、前に行われるように。
コントラクトアドレスを貼り付ければ、リスクを取る前にオーナー権限、流動性、売却シミュレーションの結果が分かります。1 回ごとに少額の手数料がかかり、金額は署名の前に表示されます — どのプランでも、加入後は無制限に含まれます。