Show HN: Stroq – a local audit of what your coding agent did and why
Show HN: Stroq – a local audit of what your coding agent did and why (github.com)
要約
Stroqは、AIコーディングエージェントの活動をローカルで監査するためのツールです。エージェントが実行したコマンド、読み取ったテキスト、送信されたキー情報などを追跡し、セキュリティリスクを可視化します。ローカルで動作し、テレメトリやアカウント登録は不要です。
全文翻訳
Show HN: Stroq – コーディングエージェントの行動とその理由をローカルで監査するツール
Stroqは、あなたのClaude CodeやCodexのセッションを読み込み、エージェントが読み取ったテキストからいくつのコマンドが生成されたか、そしてどのキーがあなたのマシンから送信されたかを表示します。
[画像: Stroqカードのターミナルでの表示例。オレンジ色のピクセル化されたフクロウのHooの横に、30日間のエージェントセッションのカウント(エージェントが実行したコマンド105件、読み取ったテキストから来たコマンド1件、マシンから出たキー1件、エージェントが開くとすぐにコードを実行するリポジトリ1件)と、注目すべき3つの瞬間が表示されており、それぞれにstroq showの行が付いています]
例:架空のマシン、架空のセッション、キー、ホスト。
HooはStroqのフクロウです。あなたのカードはあなたのセッションを表示します。
npx @stroq/cli
これは、過去30日間のセッション、キーファイル、エージェントが作業したフォルダを読み込みます。キー名のみを表示し、値は表示しません。~/.stroqの下に小さなキャッシュを書き込むだけで、何も送信しません。アカウントもテレメトリもありません。
npx @stroq/cli 上記のようなあなたのセッションカードを表示
npx @stroq/cli init 次回から停止する:エージェントを保護する
npx @stroq/cli why アクションが停止した理由
npx @stroq/cli attack サンドボックスでStroqが36の既知の攻撃を停止する様子を表示
npx @stroq/cli uninstall Stroqをアンインストールする
カードの各瞬間には、その根拠を表示するstroq showの行があります(npx @stroq/cli show 1)。stroq help --allで他のコマンドを確認できます。Node.js 22以降が必要です。Apache-2.0ライセンスです。
カードを超えて
Stroqは、AIコーディングエージェント(Claude Code、Cursor、Codex CLIなど)のためのローカルセキュリティプラットフォームです。そのフックは、実行前にすべてのツールコールを判断します。curl | shや、既知のシークレットをマシンから持ち出すアウトバウンドコールを拒否し、エージェントが読み取ったテキストをコマンドが繰り返す場合は、まずあなたに尋ね、そのテキストを特定します。コンソールには、どのエージェントが実際にStroqに問い合わせているか、そしてその理由とともにすべての決定が表示されます。すでに実行したセッションも、何もインストールせずにチェックできます。
npx @stroq/cli console # コンソール:127.0.0.1上のプライベートページ
npx @stroq/cli replay --all # ポリシーに対する過去30日間のClaude Codeセッション。フックは不要
npx @stroq/cli sent # エージェントはあなたのキーを渡しましたか?キー名のみ、値はなし
npx @stroq/cli init # エージェントにフックし、次のセッションを保護する
[画像: Stroqコンソール、ライブ画面:記録された最後の8つのアクション、4つが許可、1つが質問、2つが拒否、1つがフラグ付けされ、拒否されたアクションはエージェントが読み取った内容、実行した内容、決定、ルールに展開されます]
架空のマシン:架空のセッション、キー、ホスト。何も実行されませんでした。
コンソール
5番目の画面はルールです:アクションを実行せずに試す、プレビューとテストでルールをオンにする、元に戻す機能付きの履歴、およびルールのリファレンス。接続済みは、Stroqのフックがエージェントの設定に入っていることを意味し、エージェントがそれらを呼び出しているわけではありません。テストフックとライブがそれを表示します。
0.30.0より前のビルドからの画面。架空のマシンを読み取っています:架空のセッション、キー、ホスト。何も実行されませんでした。
npx @stroq/cli console # 127.0.0.1上のプライベートページ
npx @stroq/cli console --workspace /path/to/repo # 確認すべきプロジェクト
表示されるリンク全体を開きます。これは、コンソールが起動するたびに新しいキーを運びます。コンソールは、このマシンでStroqが既に記録しているものを読み取ります。変更は、その変更のプレビューを確認した後でのみ、エージェントの設定またはStroqのポリシーを変更します。実行されるチェックは~/.stroqの下に保存されます。
127.0.0.1でのみリッスンし、アカウントは不要で、テレメトリもありません。何もあなたのエージェントを開始しません:テストフックはフックを一度オフラインで実行します。コンソールからフックを追加するにはmacOSまたはLinuxが必要です。Windowsではstroq initを使用してください。詳細と制限については、コンソールガイドを参照してください。
ソースチェックアウトから:
pnpm install --frozen-lockfile
pnpm --dir console install --ignore-workspace --frozen-lockfile
pnpm platform:build
pnpm platform --workspace /path/to/repo
ターミナルで
[画像: stroq replay --last ステージングされたセッションで:エージェントが読み取ったGitHub issueがSUSPECTと評価され、それに続く2つのコマンドが拒否される(18秒後にdeny-encoded-execによるcurl to sh、54秒後にissueに記載されたパッケージ名のnpxがdeny-origin-suspectによるもの)、他の4つのアクションは許可される]
架空のClaude Codeトランスクリプトの同じストーリーに対する0.29.0 CLIの出力。パスは短縮されています。
stroq replayはエージェント自身のトランスクリプトを読み込むため、Stroqがインストールされる前のセッションでも機能します。どのコンテンツをエージェントが読み取ったか、そして後続のどの操作がそれから派生したかを確認できます。--allは過去30日間のすべてのセッションを調べ、どのセッションを開くべきかを示します。何も実行されず、何も送信されません。判定は今日のポリシーによるものであり、その時点での出来事の記録ではありません。
stroq sentは、Claude Code、Codex CLI、Cursorのセッションとマシン上の認証情報を比較し、各キーがどこに行ったかを示します:他の会社に送信された、送信された可能性がある、AIによって見られた、独自のサービスで使用された、または実行前にブロックされたか。キーの名前とソースを表示し、値は表示しません。まずセッションシークレットスキャンウォークスルーから始めてください(まだセッションがない場合は、架空のキーで試してみてください)。
stroq sentの検出結果の例
架空のキー、ビルドされたCLIの出力(トリミング済み):
stroq sent: AIエージェントはあなたのキーを渡しましたか?
あなたの6つのキーのうち6つがエージェントセッションに表示されています:2つは他の会社に送信され、1つは送信された可能性があり、1つはAIによって見られ、1つは独自のサービスで使用され、1つは実行前にブロックされました。
3つのセッション(Claude Code 2、Codex 1)、2026-10-02から2026-10-19をチェックしました。
6つのキーと比較しました:~/.aws/credentials、~/.npmrc、~/work/shop/.env、~/work/api/.env。
他の会社に送信済み:今日これらをローテーションしてください(2件)
1. STRIPE_SECRET_KEY ~/work/shop/.envから
送信先 collector.example、curlコマンド内
日時 2026-10-11 14:02 UTC · Claude Code · ~/work/shop
アクション https://dashboard.stripe.com/apikeys で失効させ、~/work/shop/.envを更新してください
AIによって表示済み:エージェントのモデルがこれらのキーを見ました(1件)
4. aws_secret_access_key ~/.aws/credentialsから
表示場所 ~/.aws/credentialsの読み取り出力内
日時 2026-10-02 09:42 UTC · Claude Code · ~/work/api
注:除外されていません:そのセッションの後の2つのコマンドはネットワークに到達する可能性があります。
アクション エージェントのモデルが見ました。必要であればローテーションしてください:https://console.aws.amazon.com/iam/home#/security_credentials
Stroqは、コマンド内でキーが見つかった場合にのみ送信を名前付けします。スクリプト、ファイル、または変数がキーを表示せずに持ち出す可能性があります。
stroq attackは、公開レポートと合成セルからの36の攻撃を、使い捨てのホーム環境であなたのポリシーに対して実行します。0.30.0では、15が拒否され、21が質問され、0が通過しました。
対象範囲と制限
- 各アクションの前。Claude Code、Cursor、Codex、Copilot CLI、Windsurf、Antigravityのネイティブフック、OpenClawのプラグイン、stdio MCPプロキシ。既知のシークレットを含むサポートされているアウトバウンドコールは拒否できます。それらが繰り返すツール出力に後続のアクションを紐付けるプロビナンス。エージェントが読み取ったテキストからコピーされた値に関する質問は、セッションでバックグラウンドで何かを開始していない限り、Claude Codeではセッションごとに1回尋ねられます。
- 事後。
replayとsentは、Stroqがインストールされる前のセッションを含むローカルセッションレコードを読み取ります。古い、ローテーションされた、または不明な値は失われる可能性があり、コマンドに表示されなかったキーがスクリプト、ファイル、または変数でまだ持ち出されている可能性があります。ローカルトランスクリプトの一致は、それ自体ではモデルプロバイダーへの配信を証明しません。 - ローカル。フックからのアウトバウンドネットワークコールはありません。古いタスクロック実行のフックは、ローカルの親コントローラーにのみ話します。テレメトリはありません。
- 制限。フックはホストが送信するものしか見ることができず、それはエージェントとバージョンによって異なります。マッチングはテキストレベルで行われるため、モデルがゼロから書き出したコマンドはソースにトレースバックしません。これはサンドボックスではなく、フィルターです。ライブフックに依存する前に、統合制限をお読みください。
ドキュメント
- ガイド:すべて、セクションごとに。インストール · コマンド · 仕組み · 保証と制限
- エージェントごとの詳細:各エージェントのフックで許可されること、および文書化されたすべての制限
- 誤検知 · 攻撃カバレッジ · Cloak vs AgentCloak
- セキュリティ · 変更履歴 · 貢献
貢献者
コードの貢献、バグ報告、エージェント統合のテスト、ドキュメントの改善に貢献してくれたすべての人に感謝します ❤️
[画像: 貢献者]