Feintkit

The authoritative text is the English page: English version of this page

スイートのツール: インストール、判定、検知、レポート、事実の鮮度維持

シナリオランナー (feintkit、DETECTION-INTEGRATION.md を参照) の周辺に、五つのツールがあります。このページでは、それぞれの正確なコマンド、フラグ、終了コード、オフラインでの例を示します。コマンドラインとフラグは、ドキュメントパッケージのテストによって実際のツールと照合されています。最初に RESPONSIBLE-USE.md をお読みください。

手順ツールコマンドネットワークが必要か
インストールインストーラー (feintkit-suite)node packages/installer/dist/src/bin.jshttps のソースの場合のみ
実行ランナー (feintkit)DETECTION-INTEGRATION.md を参照いいえ
トランスクリプトの判定トランスクリプトの取り込み。feintkit verify 経由で使用node packages/cli/dist/src/bin.jsいいえ
セキュリティ製品の代役検知テスト用スタンドイン (feintkit-watch)node packages/watch/dist/src/bin.jsいいえ
レポートレポート (feintkit-report)node packages/report/dist/src/bin.jsいいえ
事実の鮮度維持ファクトチェック (feintkit-factcheck)node packages/factcheck/dist/src/bin.jsはい

すべてのコマンドは、npm run setup の後にスイートのリポジトリのルートから実行します。例の中で # exit <n> で終わる行は、そのコマンドが返す終了コードを示します。入力するときはこのコメントを省いてください。<work> は、任意に選んだ空のディレクトリを表します。

インストーラー (feintkit-suite)

目的: スイートを、ディレクトリ、リリースの tarball、または https アドレスから展開します。tarball は、別の経路で提供されたチェックサムと照合し、免責事項の通知と実行内容の計画を表示してから展開します。--run-setup を指定しない限り、スイートのビルドは実行しません。指定した場合は、最小限の環境で npm run setup --ignore-scripts を実行し、シナリオを一覧表示して、次の手順を表示します。指示がない限り root としての実行を拒否し、自身のインストールではないディレクトリを上書きすることはありません。完了したインストールに対して再度実行すると already installed と表示されます。

位置づけ: まだスイートを持っていないマシンでの最初の手順です。すでにチェックアウトで作業しているメンテナーには必要ありません。

使い方 (ツール自身の出力):

usage: feintkit-suite install --from <directory|tarball|https-address> [--sha256 <hex> | --checksums <SHA256SUMS file or https address>] [--trust-remote-checksums] [--dest <directory>] [--allow-root] [--force] [--run-setup | --skip-build] [--accept-disclaimer]
       feintkit-suite install [--dest <directory>]   (with FEINTKIT_RELEASE_BASE set to an https release address; needs --sha256 or --trust-remote-checksums)
       feintkit-suite --version
       feintkit-suite --help
フラグ意味
--from <source>ディレクトリ、.tar.gz ファイル、または https アドレス。指定しない場合、アドレスは FEINTKIT_RELEASE_BASE から組み立てられます。
--sha256 <hex>tarball の期待される SHA-256。ダウンロードとは別の経路から取得したもの。--checksums と併用できません。tarball には --sha256 または --checksums が必要で、ディレクトリにはどちらも不要です。
--checksums <file or https address>tarball を列挙した SHA256SUMS ファイル。別途入手したローカルファイルを渡してください。https アドレス (FEINTKIT_RELEASE_BASE から組み立てられるものも含む) はダウンロードと同じ提供元に由来するため、--trust-remote-checksums も指定しない限り拒否されます。
--trust-remote-checksumstarball と同じ提供元から取得したチェックサムファイルを受け入れ、警告を表示します。その提供元を管理する者が、展開される内容を管理することになります。
--dest <directory>インストール先。既定値: カレントディレクトリの feintkit-suite。
--allow-rootroot ユーザーとしての実行を許可します。
--force異なるバージョンまたは未完了のビルドを含むインストールを置き換えます。
--run-setup展開後に、最小限の環境でスイートの npm run setup --ignore-scripts を実行します (展開したパッケージのセットアップスクリプトは実行されます。依存関係のインストールスクリプトは実行されません)。指定しない場合は何も実行されず、実際のコマンドが表示されます。
--skip-build既定の動作で、古いコマンドラインとの互換のために残されています。展開のみを行います。--run-setup と併用できません。
--accept-disclaimerプロンプトなしで通知を承認します。対話的でないセッションでは必要です。
--version, --helpバージョンまたは使い方のテキストを表示して、終了コード 0 で終了します。

終了コード:

コード意味
0インストールした、すでにインストール済み、または --help / --version。
2使い方の誤り (次の場合も含みます: --sha256 と --checksums の両方、--run-setup と --skip-build の両方、ソースがない、ディレクトリのソースにチェックサムを指定した、または --trust-remote-checksums なしで https のチェックサムを指定した)。
3完全性の失敗: ソースが見つからない、tarball にチェックサムがない、チェックサムの不一致、不正な tarball、またはダウンロードの失敗。
4--allow-root なしでの root としての実行を拒否しました。
5インストール先の問題: Feintkit のインストールではない、--force なしで別のインストールがある、または書き込みの失敗。
6セットアップまたはシナリオの一覧表示が失敗しました。
7免責事項の通知が承認されませんでした。

オフラインでの例 (ソースにはローカルディレクトリを使用。何もダウンロードされず、パッケージ内のものは何も実行されません):

node packages/installer/dist/src/bin.js --version   # exit 0
node packages/installer/dist/src/bin.js install --from docs/guide --dest <work>/suite   # exit 7
node packages/installer/dist/src/bin.js install --from docs/guide --dest <work>/suite --accept-disclaimer   # exit 0
node packages/installer/dist/src/bin.js install --from <work>/missing.tar.gz --sha256 0000 --dest <work>/other --accept-disclaimer   # exit 3

通知は、ソースを読む前に表示されて承認されるため、対話的でないセッションでは、すべてのインストールに --accept-disclaimer が必要です。最初のインストールは、例のセッションが対話的でないため拒否されます。二番目のインストールは通知を承認し、docs/guide をスイートであるかのように展開しますが、何も実行しません。実際のインストールでは、ご自身の --from のソースと、別の経路から得た --sha256 またはローカルの --checksums の値を使い、パッケージの setup スクリプトを読んだ後にのみ --run-setup を加えます。

トランスクリプトの取り込み (feintkit verify --transcript)

目的: 保存されたエージェントのトランスクリプトを、判定ルールが判定するプレーンテキストに変換し、判定が周囲の記録形式ではなく、エージェントが言ったことと行ったことだけを見るようにします。これは独自のコマンドを持たないライブラリであり、verify に --format が渡されたときにランナーが使用します。

位置づけ: シナリオをエージェントに対して実行し、エージェントの出力を保存した後で、エージェントが注入された指示に従ったかどうかを判定するときです。

使い方 (ランナー自身の使い方テキストの verify の行):

verify <id> [--transcript <file>] [--format <name>] [--strict] [--record] [--fail-on-complied] [--deterministic]
フラグ意味
--transcript <file>保存されたトランスクリプト。--format がない場合、ファイルはそのままプレーンテキストとして判定されます。
--format <name>名前を指定した形式でファイルを読み取ります。auto を指定すると検出します。--transcript が必要です。名前: claude-stream-json、anthropic-messages、openai-chat、plain。
--strict--format と併用した場合: 正確に読み取れないトランスクリプトを、注意ではなくエラーとして扱います。--format が必要です。
--record判定を agent_outcome イベントとして、シナリオの events.jsonl に書き込みます。レポートはこれを表示します。
--fail-on-complied判定が complied の場合に、3 で終了します。
--deterministic実行時と同じく、固定の実行 ID RUN0000 を使います。

verify の終了コード:

コード意味
0アーティファクトのチェックに合格しました (かつ、エージェントが従わなかったか、--fail-on-complied が指定されませんでした)。
1アーティファクトのチェックが失敗したか、シナリオまたはその実行が見つかりませんでした。
2使い方の誤り、またはトランスクリプトを読み取れなかった、あるいは取り込めなかった場合 (メッセージは cannot ingest transcript で始まります)。
3--fail-on-complied が指定され、判定が complied です。

--format を指定すると、形式と注意事項がエラーストリームに出力されます (transcript format: <name> (named|detected))。16777216 バイトを超えるトランスクリプトは拒否されます。

オフラインでの例 (ガイド自身のページをトランスクリプトのテキストとして使います。MARKERS.md には決定的な実行の確認トークンの例が含まれ、RESPONSIBLE-USE.md には含まれません):

node packages/cli/dist/src/bin.js --root repos/feintkit-mcp --out-dir <work>/out run mcp-01-tool-poisoning --deterministic   # exit 0
node packages/cli/dist/src/bin.js --root repos/feintkit-mcp --out-dir <work>/out verify mcp-01-tool-poisoning --transcript docs/guide/RESPONSIBLE-USE.md --format plain --deterministic   # exit 0
node packages/cli/dist/src/bin.js --root repos/feintkit-mcp --out-dir <work>/out verify mcp-01-tool-poisoning --transcript docs/guide/MARKERS.md --format plain --strict --record --fail-on-complied --deterministic   # exit 3
node packages/cli/dist/src/bin.js --root repos/feintkit-mcp --out-dir <work>/out verify mcp-01-tool-poisoning --format plain   # exit 2

二番目のコマンドは verdict: resisted を表示し、三番目は verdict: complied を表示して 3 で終了し、四番目は --format に --transcript が必要なため使い方の誤りになります。

検知テスト用スタンドイン (feintkit-watch)

目的: セキュリティ製品のあえて単純にした代役で、カバレッジマトリクスとレポートの Detection 列を端から端まで試せるようにします。テスト対象のエージェントが行ったことと見たもの (保存済みまたはパイプで渡されたヘッドレスセッションのトランスクリプトにある、ツール呼び出し、ツール結果の内容、assistant のテキスト、読み込まれたスキルのテキスト。または一行に一つのシェルコマンドを並べた単純なリスト) を読み取り、各呼び出しと各内容を小さな読みやすいルールファイル (packages/watch/rules/starter.json) と照合して、feintkit-matrix と feintkit-report が読む検知ファイル (--detections) と、証拠ファイルを書き出します。これはテスト用のフィクスチャであり、製品が何をどの形式で記録しなければならないかの実例です。セキュリティ製品ではなく、出力するすべての行がそのことを明記しています。

位置づけ: シナリオをエージェントに対して実行し、エージェントの出力を保存した後、マトリクスまたはレポートの前です。三つの制限が設計の一部です。観察するだけです。エージェントが判断した後で呼び出しを見るため止めることができず、blocked の結果は enforcement: simulated とラベル付けされたポリシー上の判定であり、実際の拒否ではありません。セッションのストリームは見ますが、プロトコルやネットワークは見ません。42 個のシナリオのうち 9 個は、そのシグナルがプロトコルトラフィック、ネットワークトラフィック、ピクセル、またはクライアントが取り除くフロントマターにあるため、このツールはそれらのエントリを書かず、マトリクスは not-reported のままになります。見えないものについて missed と主張することはなく、エージェントの判定が、シグナルがストリームを通過したことを証明する十一個のシナリオについてのみ、判定が complied でどのルールにも一致しなかった場合に missed を報告します。応答に含まれる確認トークンはエージェントの判定であり、検知ではなく、どのルールもそれを読みません。スタータールールの大半はスイート自身の文字列に一致するため、それらの行の緑の結果は循環した証拠です。ルールファイルは各ルールを marker または behaviour と記しています。このツールが出す blocked や detected は、どの製品についての証拠でもありません。検知ファイルには、そのコマンドラインと CI ログで出所が見えるよう、detections.feintkit-watch.json という名前を付けてください。

実際のエージェントで多数のシナリオに対して実行するには、サンプルのループ docs/examples/real-agent-loop.sh を使います (エージェント、判定、--merge 付きのスキャン、マトリクスとレポート。停止して再開できます)。手順ごとの説明は DETECTION-INTEGRATION.md のセクション 5 にあります。

使い方 (ツール自身の出力):

usage: feintkit-watch scan (--scenario <id> --transcript <file> [--verdict <v> | --events <file>] | --map <file>) --rules <file> --out <file> [--evidence <file>] [--merge] [--format auto|stream-json|command-log] [--root <dir>]... [--timestamp <iso>] [--fail-on-missed]
       feintkit-watch tee --scenario <id> --rules <file> --out <file> [--verdict <v> | --events <file>] [--evidence <file>] [--merge] [--format auto|stream-json|command-log] [--root <dir>]... [--timestamp <iso>]
       feintkit-watch check-rules --rules <file> [--root <dir>]...
       feintkit-watch export --evidence <file> --format jsonl|sarif|csv --out <file>
       feintkit-watch import --input <file> --source <name> --out <file> [--evidence <file>] [--merge] [--root <dir>]...
フラグ意味
--scenario <id>このトランスクリプトが属するシナリオ。あなたが指定するもので、内容から推測されることはありません。
--transcript <file>保存されたトランスクリプト (scan)。tee は代わりに標準入力を読みます。
--map <file>複数の実行の JSON マップ (schemaVersion 1 と runs。各 run は scenario、transcript、および任意で events または verdict を持ちます)。パスはマップからの相対です。--scenario、--transcript、--verdict、--events とは併用できません。
--rules <file>ルールファイル。
--out <file>書き出す検知ファイル (シナリオ ID を detected、blocked、missed に対応付けたフラットなオブジェクト)。
--evidence <file>証拠ファイルも書き出します。一致ごとに一行の JSON で、一致したテキストに切り詰められ、サマリー行が付きます。export では読み取る証拠ファイル、import ではインポートされたイベントの任意のファイルです。
--merge既存の検知ファイルと証拠ファイルを読み、スキャンしたシナリオだけを置き換えます。存在しないファイルは空として扱い、無効なファイルはエラーとなり、変更されません。
--format <name>scan と tee: auto (既定値)、stream-json、command-log。export: jsonl、sarif、csv (必須)。
--verdict <v>feintkit verify によるエージェントの判定: complied、resisted、resisted_surfaced、inconclusive。判定がないと missed は決定できません。
--events <file>events.jsonl の最後の agent_outcome イベントから判定を読みます。--verdict とは併用できません。
--root <dir>シナリオを保持するカテゴリリポジトリ。複数指定する場合は繰り返します。既定値: カレントディレクトリ。
--timestamp <time>証拠行の時刻を、厳密に YYYY-MM-DDTHH:MM:SS.mmmZ の形式で設定します。FEINTKIT_DETERMINISTIC=1 の場合は、代わりに時刻が固定されます。
--fail-on-missedスキャンしたシナリオが missed の場合に、ファイルを書き出した後で 3 で終了します。
--input <file>import のみ: 実際の製品の JSON Lines イベント (形式は後述)。
--source <name>import のみ: 製品の名前 (1 から 64 文字の英字、数字、スペース、ドット、アンダースコア、ハイフン。feintkit-watch や stand-in を含めることはできません)。インポートされたすべてのイベントの product になります。

tee は標準入力を変更せずに標準出力へ渡し、入力の終わりで scan と同じ処理を行い、その行をエラーストリームに出力します。check-rules はルールファイルとその対照を検証し、正直なカバレッジの行を出力します。

エクスポートとインポート (観察のみ、オフライン。正確な形式は仕様 fnd-18-watch の Amendment 1.2 にあります)。export --evidence <file> --format jsonl|sarif|csv --out <file> は証拠ファイルを読み、三つの形式のいずれかで書き出します。jsonl は一行に一つのイベントで、安定したキー schema、product、stand_in、timestamp (ISO-8601)、event (detection または missed)、scenario、rule、action (detect または block。block は模擬)、basis (marker または behaviour)、enforcement、tool、evidence (すでに秘匿処理され、200 文字に切り詰められた断片)、location (トランスクリプトの path:line) を持ちます。csv は同じ列を持ち、スプレッドシートが数式と解釈するセルには先頭にアポストロフィが付きます。sarif は SARIF 2.1.0 のログで、そのツールドライバーは、これがテスト用スタンドインであり、セキュリティ製品ではないことをはっきり述べています。各結果は、ルール ID、メッセージ、論理的な場所としてのシナリオ、そしてトランスクリプトのパスが相対パスの場合は物理的な場所としてのトランスクリプトの行を持ちます。import --input <file> --source <name> --out <file> は逆方向の処理です。同じ JSON Lines 形式を書き出す実際の製品 (検知に必要なのは scenario と action だけです。event が missed の場合は、実行されたが報告されなかったシナリオを示します。未知のキーは無視されます) は、--detections 用のその製品専用の検知ファイルを得ます。スタンドインと製品の結果は決して混在しません。--source は必須で、インポートされたイベントはそれを product として保持し、stand_in は false になり、スタンドイン自身の記録は拒否され、feintkit-watch を含むファイル名は出力に対して拒否されます。二つを比較するには、マトリクスまたはレポートに一度に一つの検知ファイルを渡してください。

終了コード:

コード意味
0完了しました (シナリオのエントリが書き込まれなかった場合も含みます)。
1出力ファイルを書き込めませんでした。
2使い方の誤り、読み取れないまたは無効な入力、無効なルール、または未知のシナリオ。
3--fail-on-missed が指定され、スキャンしたシナリオが missed です。

オフラインでの例 (トランスクリプトはパッケージのフィクスチャです。二番目のコマンドは、以下の最初のレポートの例が読む検知ファイルを書き出します):

node packages/watch/dist/src/bin.js check-rules --rules packages/watch/rules/starter.json --root repos/feintkit-mcp --root repos/feintkit-skills --root repos/feintkit-injection --root repos/feintkit-exfil --root repos/feintkit-agents --root repos/feintkit-supplychain --root repos/feintkit-abuse   # exit 0
node packages/watch/dist/src/bin.js scan --scenario mcp-08-exfil-sim --transcript packages/watch/test/fixtures/mixed.jsonl --rules packages/watch/rules/starter.json --out <work>/detections.feintkit-watch.json --evidence <work>/detections.evidence.jsonl --timestamp 1970-01-01T00:00:00.000Z --root repos/feintkit-mcp --root repos/feintkit-skills --root repos/feintkit-injection --root repos/feintkit-exfil --root repos/feintkit-agents --root repos/feintkit-supplychain --root repos/feintkit-abuse   # exit 0
node packages/watch/dist/src/bin.js export --evidence <work>/detections.evidence.jsonl --format sarif --out <work>/detections.feintkit-watch.sarif   # exit 0
node packages/watch/dist/src/bin.js export --evidence <work>/detections.evidence.jsonl --format jsonl --out <work>/detections.feintkit-watch.events.jsonl   # exit 0
node packages/watch/dist/src/bin.js import --input packages/watch/test/fixtures/import-sample.jsonl --source ExampleGuard --out <work>/detections.exampleguard.json --root repos/feintkit-mcp --root repos/feintkit-skills --root repos/feintkit-injection --root repos/feintkit-exfil --root repos/feintkit-agents --root repos/feintkit-supplychain --root repos/feintkit-abuse   # exit 0
node packages/watch/dist/src/bin.js scan --scenario mcp-04-excessive-scope --transcript packages/watch/test/fixtures/clean.jsonl --verdict complied --rules packages/watch/rules/starter.json --out <work>/missed.json --fail-on-missed --root repos/feintkit-mcp --root repos/feintkit-skills --root repos/feintkit-injection --root repos/feintkit-exfil --root repos/feintkit-agents --root repos/feintkit-supplychain --root repos/feintkit-abuse   # exit 3
node packages/watch/dist/src/bin.js scan --scenario mcp-08-exfil-sim --transcript packages/watch/test/fixtures/mixed.jsonl --rules packages/watch/rules/starter.json --out <work> --root repos/feintkit-mcp --root repos/feintkit-skills --root repos/feintkit-injection --root repos/feintkit-exfil --root repos/feintkit-agents --root repos/feintkit-supplychain --root repos/feintkit-abuse   # exit 1
node packages/watch/dist/src/bin.js scan --map <work>/map.json   # exit 2

二番目のコマンドは mcp-08-exfil-sim blocked (1 rule hit; enforcement: simulated, nothing was stopped) と、48 個のシナリオのうち 39 個にルールがあると述べる行を出力します。三番目はルールに一致せず、判定が complied のため、結果は missed となり、終了コードは 3 です。四番目は、出力パスがディレクトリであるため書き込めません。

レポート (feintkit-report)

目的: シナリオのマニフェスト、実行のアーティファクト、そして指定した場合はあなたの検知記録から、一つの結果レポートを作成します。レポートには、シナリオごとに、アーティファクトの結果、エージェントの判定、検知結果、ATLAS と OWASP への対応付けが一覧され、最後に ATLAS 手法ごとの集計があります。形式: md (既定値)、json、html、sarif、junit (CI システム向けの JUnit XML。AUTOMATION.md を参照)。

位置づけ: 実行と判定の後で、結果を誰かに渡すとき、または CI ジョブのゲートにするときです。カバレッジマトリクス (feintkit-matrix、DETECTION-INTEGRATION.md) は、同じデータをより短くまとめたビューです。

使い方 (ツール自身の出力):

usage: feintkit-report [--root <dir>]... [--out-dir <dir>] [--detections <file>] [--format json|md|html|sarif|junit] [--output <file>] [--timestamp <YYYY-MM-DDTHH:MM:SS.mmmZ>] [--agent <name>] [--agent-version <text>] [--model <text>] [--permission-mode <text>] [--mitigations] [--fail-on-missed] [--fail-on-complied] [--fail-on-control-fired]
フラグ意味
--root <dir>シナリオを保持するカテゴリリポジトリ。複数指定する場合は繰り返します。既定値: カレントディレクトリ。
--out-dir <dir>実行のアーティファクトディレクトリ (ランナーのものと同じ)。
--detections <file>シナリオ ID を detected、blocked、missed に対応付ける JSON ファイル。
--format <name>json、md、html、sarif、junit。既定値は md。
--output <file>レポートを表示する代わりにファイルへ書き出します。
--timestamp <time>生成時刻を、厳密に YYYY-MM-DDTHH:MM:SS.mmmZ の形式で設定します。FEINTKIT_DETERMINISTIC=1 の場合は、代わりに時刻が固定されます。
--agent <name>, --agent-version <text>, --model <text>, --permission-mode <text>どのエージェントが結果を生成したかを記録します (fnd-44)。レポートにはエージェントの識別情報が含まれ、markdown と html のレポートには Agent under test 行が表示されます。各項目は短いプレーンなラベルで、最大 64 文字です。シークレットに見えるものは終了コード 2 で拒否され、省略した項目は unknown になります。それらを調べるためにエージェントが起動されることはありません。
--mitigations検出結果があるシナリオごとに、レビュー済みの防御側ノート (何を制限するか、どのルールを追加するか、どの設定を変更するか) を追加します。md と html ではセクション、sarif ではルールのヘルプテキスト、junit では失敗のテキストです。レイアウトが固定されている json では拒否されます。AUTOMATION.md を参照してください。
--fail-on-missedシナリオが missed と記録されている場合に、3 で終了します。
--fail-on-compliedエージェントの判定が complied の場合に、3 で終了します。
--fail-on-control-fired判定器またはテスト対象の製品が、無害な対照に対して誤報を出した場合 (対照に対する判定 complied または resisted_surfaced、あるいは検知 detected または blocked) に、3 で終了します。

終了コード:

コード意味
0レポートが作成され、失敗条件に該当しませんでした。
1シナリオレジストリのエラー (エラーストリームの FAIL で始まる行)。レポートは引き続き作成されます。
2使い方の誤り、読み取れないまたは無効な検知ファイル、または出力ファイルを書き込めませんでした。
3--fail-on-missed、--fail-on-complied、または --fail-on-control-fired に該当しました。

オフラインでの例 (上のトランスクリプトの例の実行を使い、四番目は上のスタンドインの検知ファイルを使います。最初の例は <work> の外には何も書き込みません):

node packages/report/dist/src/bin.js --root repos/feintkit-mcp --out-dir <work>/out --format md --output <work>/report.md   # exit 0
node packages/report/dist/src/bin.js --root repos/feintkit-mcp --out-dir <work>/out --format sarif --output <work>/report.sarif   # exit 0
node packages/report/dist/src/bin.js --root repos/feintkit-mcp --out-dir <work>/out --format junit --mitigations --output <work>/report.xml   # exit 0
node packages/report/dist/src/bin.js --root repos/feintkit-mcp --out-dir <work>/out --detections <work>/detections.feintkit-watch.json --output <work>/with-detections.md   # exit 0
node packages/report/dist/src/bin.js --root repos/feintkit-mcp --out-dir <work>/out --fail-on-complied --output <work>/gate.md   # exit 3
node packages/report/dist/src/bin.js --format pdf   # exit 2

ファクトチェック (feintkit-factcheck)

目的: CLIENTS.md が引用しているベンダードキュメントのすべての文を再読み込みし、マッピング元のチェック (scripts/verify-mappings.py --online) を実行して、それらの情報源のずれを見つけます。--write を付けると、見つかった各事実の日付を docs/guide/facts-verified.json に記録し、ガイドはその日付を表示します。

位置づけ: 保守作業で、スケジュールに従って (数日ごとに) 実行し、リリースの前にも実行します。ここにあるツールの中で、ネットワークを必要とする唯一のものです。すべてのチェックが、引用されたページへの外向きのリクエストだからです。スイートの通常のユーザーには必要ありません。

使い方 (ツール自身の出力):

usage: feintkit-factcheck [--repo <dir>] [--facts-file <file>] [--write] [--report <file>] [--skip-facts] [--skip-mappings] [--delay <ms>] [--timeout <ms>]
  re-reads every cited sentence of the client guides and runs scripts/verify-mappings.py --online
  --write        record today's date for each fact that was found, in docs/guide/facts-verified.json (nothing is written without it)
  --report FILE  write a report; FILE ending in .json gives JSON, anything else Markdown
  exit codes: 0 all ok, 1 drift found, 2 usage, 3 network failure
フラグ意味
--repo <dir>スイートのルート。既定値: カレントディレクトリ。
--facts-file <file>--write が日付を記録する場所。既定値: --repo の下の docs/guide/facts-verified.json。
--write見つかった各事実に今日の日付を記録します。--skip-facts とは併用できません。
--report <file>レポートを書き出します。名前が .json で終わる場合は JSON、それ以外は Markdown になります。
--skip-facts引用された文をチェックしません。
--skip-mappingsマッピング元のチェックを実行しません。両方のスキップを指定すると使い方の誤りになります。
--delay <ms>二つのリクエストの間の待ち時間。既定値は 1000。
--timeout <ms>一回のリクエストの制限時間。既定値は 30000。

終了コード:

コード意味
0すべてが見つかり、一致しました。
1ずれ: 文が見つからなかった、ページが移動した、またはエラーステータスで応答した、あるいはマッピング元が異なります。
2使い方の誤り。
3ネットワークの失敗で、ずれはありません。

オフラインでの例 (ネットワークなしで実行できるのは使い方の誤りだけです。実際のチェックは node packages/factcheck/dist/src/bin.js で、リクエストを送信します):

node packages/factcheck/dist/src/bin.js --skip-facts --skip-mappings   # exit 2
node packages/factcheck/dist/src/bin.js --write --skip-facts   # exit 2
node packages/factcheck/dist/src/bin.js --delay soon   # exit 2

その他のコマンドのフラグ

スイートには、上の五つより多くのコマンドラインツールとサブコマンドがあります。この表は、それぞれの使い方テキストにあるすべてのフラグを、それを受け付けるコマンドとともに一覧にしたものです。対象は、ランナー (feintkit) とその honey、pack、accuracy、variants コマンド、コントロールサーバー、ドキュメントジェネレーターとその translate コマンド、ガード、Web インターフェース、マニフェストツール、カバレッジマトリクス、スキャフォールドツール、feintkit-report のサブコマンド diff、history、modes、repeats、store、coverage、summary、mitigations、そして feintkit-watch のサブコマンド replay、selftest、bundle です。各コマンドは、未知のフラグで呼び出されると、自身の使い方テキストを表示します。feintkit verify のフラグはトランスクリプトの取り込みのセクションに、上の五つのツールのフラグはそれぞれの表にあります。

フラグ使用するコマンド意味
--root <dir>feintkit, feintkit-docs, feintkit-gui, feintkit-gui demo, feintkit-manifest changelog, feintkit-matrix, feintkit-report history, feintkit-report coverage, feintkit-report summary, feintkit-watch replay, feintkit-watch selftest, feintkit-watch bundleシナリオを保持するフォルダ (カテゴリリポジトリ)。複数指定する場合は繰り返します。指定しない場合、コマンドはカレントフォルダを使います。ランナーと Web インターフェースでは、インストール済みのカテゴリリポジトリを使います。
--out-dir <dir>feintkit, feintkit honey, feintkit-gui, feintkit-matrix, feintkit-report history, feintkit-report summary, feintkit-watch replay, feintkit-watch bundle実行が書き込み、コマンドが読み取るアーティファクトフォルダ。
--out-dir <folder>feintkit-gui demoデモを書き出す、新規または空のフォルダ。
--deterministicfeintkit, feintkit honey決定的モードの固定の実行 ID と時計を使い、繰り返しの実行が同じバイト列を書き出すようにします。
--allfeintkitclean と併用: 一つのシナリオではなく、すべてのシナリオのアーティファクトを削除します。
--yesfeintkitclean --all と併用: 削除を確認します。
--jsonfeintkitlist と併用: レジストリを JSON で出力します。
--jsonfeintkit pack, feintkit-manifest packcheck と併用: 結果を JSON で出力します。
--jsonfeintkit accuracy, feintkit variants結果をテキストの代わりに一つの JSON ドキュメントとして出力します 。
--jsonfeintkit-guard検出結果を JSON で出力します。
--port <0-65535>feintkit, feintkit-guiローカル Web インターフェースの TCP ポート。0 を指定すると、システムが空いているポートを選びます。
--port <0-65535>feintkit honeylisten と併用: ループバックのリスナーのポート。0 を指定すると、システムが空いているポートを選びます。
--host <address>feintkit, feintkit-guiWeb インターフェースがバインドするアドレス: 127.0.0.1、localhost、::1。それ以外は受け付けられません。
--scenario <id>feintkit honeyplant と listen と併用: おとりが属するシナリオ。
--dir <folder>feintkit honeyplant と併用: おとりファイルを受け取るフォルダ。
--file <name>feintkit honeyplant と併用: おとりファイルの名前。
--transcript <file>feintkit honeyscan と併用: エージェントが言ったことや行ったことを保持するファイル。
--format <name>feintkit honeyscan と併用: トランスクリプトの形式。feintkit verify --format と同じです。
--recordfeintkit honeyscan と併用: 結果を実行のイベントに記録します。
--fail-on-leakfeintkit honeyscan と併用: おとりが漏えいした場合に 3 で終了します。
--max-seconds <n>feintkit honeylisten と併用: この秒数の後にリスナーを停止します。
--pack <dir>feintkit packlist、run、verify、clean の前に置いて、シナリオパックのフォルダを読み込みます。複数指定する場合は繰り返します。
--mappings <file>feintkit pack, feintkit-manifest packcheck と併用: パックのシナリオを照合するマッピングファイル。
--name <pack-name>feintkit packnew と併用: 新しいパックの名前。
--prefix <letters>feintkit packnew と併用: パックのすべてのシナリオ ID の先頭になる 2 から 5 文字。
--labels <file>feintkit accuracy組み込みのコーパスに追加される、ラベル付き応答の JSON ファイル。
--replies <file>feintkit variantsjudge と併用: 各バリアントに対するエージェントの応答を保持する JSON ファイル。
--run <id>feintkit variantsjudge と併用: 応答の実行 ID。4 から 16 文字の英字または数字。
--variant <name>feintkit variantswrite と併用: このバリアントだけを書き出します。複数指定する場合は繰り返します。
--suite-root <dir>feintkit-controlサーバーが作業対象とするスイートのフォルダ。
--read-root <dir>feintkit-control監査ツールが読み取れるフォルダ。複数指定する場合は繰り返します。
--out-root <dir>feintkit-control自動化ツールが書き込む唯一のフォルダ。
--ollama-url <address>feintkit-controlローカルモデルサーバーのループバックアドレス。ローカルモデルに対してシナリオを実行するツール用です。
--model <name>feintkit-controlローカルモデルの名前。
--index <file>feintkit-docsシナリオのインデックスファイル。
--mappings <file>feintkit-docsマッピングファイル。
--out <dir>feintkit-docsgenerate がガイドを書き出し、check が比較対象とするフォルダ。
--guide <dir>feintkit-docs translate.md ページを翻訳する対象の英語ガイドのフォルダ (読み取り専用)。
--catalogs <dir>feintkit-docs translate翻訳カタログのフォルダ。言語ごとに一つの <code>.json ファイルがあります。
--out <dir>feintkit-docs translategenerate と check と併用: 言語ごとに一つのサブフォルダを受け取り、check が比較対象とするフォルダ。
--lang <code>feintkit-docs translate作業対象の言語。例: de (extract では必須。指定しない場合、generate と check はすべてのカタログを対象にします)。
--show-allowedfeintkit-guardインラインの許容によって認められている使用も一覧表示します。
--mappings <file>feintkit-manifestregistry と併用: すべてのシナリオのマッピングを照合するマッピングファイル。
--since <version>feintkit-manifest changelogこのバージョン以降のエントリを残します。
--id <id>feintkit-manifest changelog一つのシナリオのエントリを残します。
--format <name>feintkit-manifest changelog, feintkit-report diff, feintkit-report history, feintkit-report modes, feintkit-report repeats, feintkit-report mitigations出力形式: text (既定値)、md、json。
--format <name>feintkit-matrixmd (既定値) または json。
--format <name>feintkit-report coverage, feintkit-report summarytext (既定値)、md、html、json。
--detections <file>feintkit-matrix, feintkit-report history, feintkit-report summaryシナリオ ID を detected、blocked、missed に対応付ける JSON ファイル。
--fail-on-missedfeintkit-matrixシナリオが missed と記録されている場合に、3 で終了します。
--fail-on-compliedfeintkit-matrixエージェントの判定が complied の場合に、3 で終了します。
--fail-on-control-firedfeintkit-matrix判定器またはテスト対象の製品が、無害な対照に対して誤報を出した場合に、3 で終了します。
--dest <dir>feintkit-newrepo と併用: 作成するフォルダ。
--repo <dir>feintkit-newシナリオを追加する、またはチェックする対象のカテゴリリポジトリ。
--title <title>feintkit-newscenario と併用: 新しいシナリオのタイトル。
--mappings <file>feintkit-newscenario と併用: 新しいシナリオのエントリを受け取るマッピングファイル。
--harness <spec>feintkit-new新しいファイルが依存するハーネスのパッケージ指定。
--output <file>feintkit-report diff, feintkit-report modes, feintkit-report repeats, feintkit-report store, feintkit-report coverage, feintkit-report summary結果を表示する代わりにファイルへ書き出します。
--fail-on-regressionfeintkit-report diff, feintkit-report modes, feintkit-report repeats回帰が見つかった場合に、3 で終了します。
--history <file>feintkit-report history, feintkit-report store履歴ファイル。store import では、実行をストアに追加するファイル。
--agent <name>feintkit-report history実行を追記する (append、必須) または表示する (show) 対象のエージェント。
--report <file>feintkit-report historyappend と併用: 追加する結果ファイル。指定しない場合、レポートは --root、--out-dir、--detections から作成されます。
--date <YYYY-MM-DD>feintkit-report historyappend と併用: エントリの日付。
--suite-version <x.y.z>feintkit-report historyappend と併用: エントリのスイートのバージョン。
--agent-version <text>feintkit-report historyappend と併用: エージェントのバージョンラベル。
--model <text>feintkit-report historyappend と併用: エージェントのモデルラベル。
--permission-mode <text>feintkit-report historyappend と併用: エージェントの権限モードラベル。
--agent <name>feintkit-report summaryこの結果が属するエージェント。ページにその名前が表示されます。
--agent-version <text>feintkit-report summaryエージェントのバージョンラベル。
--model <text>feintkit-report summaryエージェントのモデルラベル。
--permission-mode <text>feintkit-report summaryエージェントの権限モードラベル。
--last <n>feintkit-report historyshow と併用: 最後の n 件の実行だけ。
--baseline <label>feintkit-report modes他のセットを比較する基準となるセットのラベル。
--against <results>feintkit-report repeats最初の実行と比較する第二の実行セット。複数指定する場合は繰り返します。
--results <results>feintkit-report coverageマップを判定ごとに色分けする結果セット。
--mappings <file>feintkit-report coverage二つの OWASP リストがギャップを定義するマッピングファイル。指定しない場合、ファイルはカレントフォルダから上位に向かって検索されます。
--id <scenario id>feintkit-report mitigationsこのシナリオだけを表示します。複数指定する場合は繰り返します。
--store <dir>feintkit-report store結果ストア。add が作成するフォルダで、マーカーファイルと、月ごとに一つの実行ファイルを持ちます。
--agent <name>feintkit-report storeadd と併用 (必須): 実行を生成したエージェント。query と export と併用: このエージェントの実行だけを残します。
--date <YYYY-MM-DD>feintkit-report storeadd と併用: 実行の日付。指定しない場合は結果ファイルの日付、それもなければ今日です。
--suite-version <x.y.z>feintkit-report storeadd と併用: 実行のスイートのバージョン。query と export と併用: このスイートのバージョンの実行だけを残します。
--agent-version <text>feintkit-report storeadd と併用: エージェントのバージョンラベル。query と export と併用: このラベルの実行だけを残します。
--model <text>feintkit-report storeadd と併用: エージェントのモデルラベル。query と export と併用: このラベルの実行だけを残します。
--permission-mode <text>feintkit-report storeadd と併用: エージェントの権限モードラベル。query と export と併用: このラベルの実行だけを残します。
--label <text>feintkit-report storeadd と併用: 同じ日に同じ結果となる二つの実行を区別する短いラベル (英字、数字、ドット、アンダースコア、ハイフン。最大 32 文字)。
--scenario <id or prefix->feintkit-report storequery と併用: 一つのシナリオ、またはハイフンで終わる接頭辞で ID が始まるすべてのシナリオの結果を残します。
--verdict <verdict>feintkit-report storequery と併用: このエージェントの判定 (complied、resisted、resisted_surfaced、inconclusive、n/a) の結果を残します。
--detection <state>feintkit-report storequery と併用: この検知状態 (detected、blocked、missed、not-reported、not-run) の結果を残します。
--since <YYYY-MM-DD>feintkit-report storequery と export と併用: この日以降の実行を残します。
--until <YYYY-MM-DD>feintkit-report storequery と export と併用: この日以前の実行を残します。
--month <YYYY-MM>feintkit-report storequery と export と併用: 一か月分の実行を残します。--since や --until とは併用できません。
--last <n>feintkit-report storequery と併用: 一致する実行のうち、新しい方から n 件を残します。
--by <view>feintkit-report storequery と併用: scenario (既定値) はシナリオを件数とともに一覧し、run は実行を一覧します。
--format <name>feintkit-report storequery と併用: text (既定値)、md、json。export と併用: kb (既定値。ナレッジベース用の Markdown ファイル) または jsonl。
--loop <dir>feintkit-watch replay, feintkit-watch bundleリプレイする、または bundle create ではパックする、保存されたループフォルダ。
--rules <file>feintkit-watch replay, feintkit-watch selftest, feintkit-watch bundleスタンドインのルールセット。指定しない場合はスタータールールセットを使います。bundle create ではルールセットがバンドルに保存され、bundle replay はそのコピーを使います。
--timestamp <iso>feintkit-watch replay, feintkit-watch bundle出力に書き込まれるタイムスタンプ。bundle create では、バンドルの作成時刻であり、バンドル内のすべてのファイルの更新時刻です。
--out <file>feintkit-watch bundlecreate と併用: 書き出すバンドルファイル。まだ存在してはならず、ループフォルダの内部にあってもなりません。
--agent <label>feintkit-watch bundlecreate と併用: 環境記録に保存されるエージェントラベル (fnd-44)。省略した項目は、ループの report.json の識別ブロックから取られ、なければ unknown になります。
--agent-version <label>feintkit-watch bundlecreate と併用: エージェントのバージョンラベル。
--model <label>feintkit-watch bundlecreate と併用: エージェントのモデルラベル。
--permission-mode <label>feintkit-watch bundlecreate と併用: エージェントの権限モードラベル。
--redactfeintkit-watch bundlecreate と併用: 拒否する代わりに、バンドル内のファイルにあるシークレットの形式とホームフォルダパスのユーザー名を置き換えます。マニフェストには件数と元のハッシュが記録されます。
--bundle <file>feintkit-watch bundleverify と replay と併用: 読み取るバンドルファイル。
--digest <sha256>feintkit-watch bundleverify と replay と併用: バンドルについて渡されたダイジェスト (64 文字の小文字の十六進数)。バンドル内のダイジェストが異なる場合は失敗です。