
2026/11/06 0:54
Show HN: ストローク — コーディングエージェントが行った操作と理由のローカル監査ツール
RSS: https://news.ycombinator.com/rss
要約▶
日本語訳:
Stroq は、外部アカウントを必要とせずに AI コーディングエージェント(Claude Code、Cursor、Codex CLI、Copilot など)の偶発的な機密情報の漏洩を防ぐことで、さまざまなセキュリティを保護することを目的としたプライバシー志向のローカルセキュリティプラットフォームです。macOS と Linux で動作し、ネイティブフックを搭載しており、機密クレデンシャル(例:API キー)を含むアウトバウンドリクエストを含むツールコールをインターセプトしてブロックします。システムは、エージェントセッションの過去 30 日間の記録、キーファイル(例:
~/.aws/credentials)、およびフォルダを読み取り、ローカルキャッシュ(~/.stroq)に格納されたエクスポートされたキーの名前のみを印刷し(値は決して表示しない)、その機密性を特定します。システムはフルなサンドボックス化ではなくテキストレベルのマッチングを採用しており、繰り返し実行されるコマンドや特定のキーとの一致(例:エクスポートされた Stripe シークレット)を検出します。ユーザーは、未来のセッションを保護するために npx @stroq/cli init という特定の CLI コマンドを使用したり、フックが無効だった場合でも過去 30 日間のセッションを分析する replay --all コマンドを使用したり、既知の攻撃ベクトルに対してサンドボックス化されたテストを行うために攻撃シミュレーション(バージョン 0.30.0 で利用可能)のコマンド attack を使用したりできます。127.0.0.1 のプライベートローカルコンソールでは、テレメトリやアウトバウンドコールなしで証拠ログを取得できます。ストロークはサポートされた環境での明示的な漏洩に対して非常に効果的ですが、ローカルキャッシュの定義と一致しない古い、回転済み、または暗黙的なスクリプトベースの脆弱性を検出できない可能性があります。現在では Apple と Linux 向けのネイティブインストールに限定されており、Windows ユーザーは stroq init を手動で有効にする必要があります。インストールには Node.js 22 またはそれ以降(Apache-2.0 ライセンス)が必要です。誤検知に関するガイドやエージェント固有のフックなど、包括的なドキュメントは stroq.dev で利用可能です。究極的には、Stroq はローカル開発環境におけるセキュリティとプライバシーの間に強固なバランスを提供します。本文
Stroq: AI エージェント向けローカルセキュリティプラットフォーム
Stroq は、ご自身の Claude Code および Codex セッションを読み取り、エージェントが閲覧したテキストから由来するコマンドの数をカウントし、マシンから外部へ送信されたキーの種類を分析します。
- 表示内容: アジェンツ(エージェント)が閲覧したテキストから生成されたコマンド数、およびマシンから流出したキーの種類のみを表示します。
- 対象範囲: 直近 30 日のセッション、キーファイル、およびエージェントが作業したフォルダが読み取られます。
- プライバシー保証:
- コマンド名のみ表示し、キーの値は一切表示しません。
ディレクトリに最小限のキャッシュファイルを記録するだけで、外部への送信は行いません。~/.stroq- アカウント登録やテlemetry(使用状況の収集)は不要です。
コマンド一覧と基本機能
基本コマンド
| コマンド | 概要 |
|---|---|
| ご自身のセッションカードを表示します。 |
| 次回から機能を停止し、エージェントを保護するために使用します。 |
| アクションが停止された理由を確認します。 |
| サンドボックス環境で、Stroq が既知の攻撃を検知・阻止する様子を見ることができます(36 種類)。 |
| Stroq を削除します。 |
カード詳細の表示
- 証拠の出力: カード上の各モーメントには「stroq show」ラインがあり、背後にある証拠を出力できます(例:
)。npx @stroq/cli show 1 - 全コマンドの一覧表示:
で利用可能なコマンドを確認可能です。stroq help --all - 環境要件: Node.js 22 以上が必要です(Apache-2.0 ライセンス)。
⚠️ 注意: 画像内のマシン、セッション、キー、ホストはすべて架空のものであり、実際には何ら実行もされていません。
カード機能を超えて:セキュリティプラットフォームとしての活用
Stroq は、AI コーディングエージェント(Claude Code、Cursor、Codex CLI など)向けのローカルセキュリティプラットフォームです。そのフック(Hook)は、各ツール呼び出しを実行する前に評価します。
- 通信遮断:
などの危険な操作や、マシン上の既知の秘密情報を外へ持ち出す通信を遮断します。curl | sh - 再確認機能: エージェントが以前読み取ったテキストを再度含むコマンドを発行しようとした際には、そのテキストを提示し、ユーザーに確認をとってから実行を許容します。
コンソール機能
コンソール画面では、実際に応答を求めているエージェントと、各意思決定の理由が表示されます。インストールなしで既存セッションの検証も可能です。
:npx @stroq/cli console
にホストされるプライベートなページです。127.0.0.1
: 直近 30 日間の Claude Code セッションをポリシーに基づいて再検証(フックのインストールは不要)。npx @stroq/cli replay --all
: エージェントがキー情報を外部へ流出させたかどうかを確認(キー名のみ表示、値は表示しない)。npx @stroq/cli sent
: エージェントにフックを適用し、次のセッションを保護します。npx @stroq/cli init
コンソールについて詳しく
第五の画面「Rules(ルール)」では、実際に動作させることなくアクションを試すことができます。
- プレビューとテスト: ルールの有効化をプレビューとテストモードで行い、履歴の取り消しも可能で、ルールへの参照リンクも確認できます。
- 接続状態の確認:
- Connected(接続済み): Stroq のフックがエージェントの設定に含まれていることを意味します。
- 注意:エージェントがそれを呼び出しているわけではありません(「Test hook」および「Live」表示で確認可能)。
コンソール起動コマンド
: デフォルト設定でのプライベートページ表示(npx @stroq/cli console
)。127.0.0.1
: ストロクが対象にするプロジェクトを指定します。npx @stroq/cli console --workspace /path/to/repo
💡 コンソールの仕組み: コンソール起動ごとに新しいキーが含まれます。すでにストロクで記録されたデータを閲覧できます。設定変更やポリシー更新は、プレビューの確認後にのみ反映されます。実行チェック結果は
に保存されます。~/.stroq
動作環境とプラットフォームの制限
- セキュリティ:
のみリスニングし、アカウント不要、テlemetry なし。127.0.0.1 - 動作原理: コンソール自体がエージェントを起動することはありません。「Test hook(テストフック)」はオフラインで一度だけフックを実行します。
- OS 依存: コンソールからフックを追加するには 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
ターミナルでの使用例(CLI 出力)
以下は、0.29.0 バージョンの CLI 出力です(パス名は省略されています)。
stroq replay
stroq replay- 機能: エージェント自身のスクリプトを読み取るため、Stroq をインストールする前のセッションでも機能します。エージェントが何を読み取り、その後にどのようなアクションが発生したかを特定します。
- オプション:
オプションを使用すると、直近 30 日のすべてのセッションを確認し、どのセッションを開くべきか提案します。--all - 注意: 実行も送信も行わず、判断は現在のポリシーに基づき、過去の動作の記録ではありません。
stroq sent
stroq sent- 機能: Claude Code、Codex CLI、Cursor のセッションをマシンの認証情報と比較し、各キーがどこへ流出したかを特定します。
- 別の企業へ送信されたケース
- 送信の可能性が高いケース
- AI が視認したケース
- エージェント自身で使用されたケース
- 実行前にブロックされたケース
- 表示制限: 表示されるのはキー名とソースのみで、値は一切表示されません。
✅ セッションの秘密スキャン手順から始めると良いでしょう(まだセッションがない場合は、架空のキーを使用してください)。
stroq sent
の検出結果例(架空データ)
stroq sent確認期間: 3 セッション(Claude Code: 2、Codex: 1)、2026 年 10 月 2 日〜19 日 比較対象:
~/.aws/credentials, ~/.npmrc, ~/work/shop/.env, ~/work/api/.env
【送信されたキー】(別の企業へ)→ 本日中に回転(rotate)してください
STRIPE_SECRET_KEY- ソース:
~/work/shop/.env - 検出状況: 宛先:
、curl コマンド経由collector.example - 日時: 2026-10-11 14:02 UTC(Claude Code)
- 対応策: Stripe API キー管理ダッシュボード からキーを無効化し、
を更新してください。~/work/shop/.env
- ソース:
【AI が視認したキー】→ 重要であれば回転を検討
aws_secret_access_key- ソース:
~/.aws/credentials - 検出状況: 読み取り出力中に視認
- 日時: 2026-10-02 09:42 UTC(Claude Code)
- 注意: そのセッションの後半でネットワーク通信が行われた可能性あり(2 つのコマンドが検出)。
- 対応策: AWS IAM セキュリティ資格情報管理画面 でキーを回転してください。
- ソース:
⚠️ 注記: Stroq は、コマンド内でキーが表示された場合にのみ「送信」と判断します。スクリプト、ファイル、または変数を介してキーが流出しても表示されない場合は検出できません。
stroq attack
の概要
stroq attack36 種類の既知攻撃(公開レポートと合成データに基づく)をテスト実行しました(0.30.0 バージョン)。
- 遮断: 15 つの攻撃を検知・ブロック
- 確認: 21 つの攻撃についてユーザーに確認を求め
- 通過: 0 つの攻撃
機能範囲と制限事項
【アクション実行前】
- 対応エージェント: Claude Code, Cursor, Codex, Copilot CLI, Windsurf, Antigravity、OpenClaw プラグイン、stdio MCP プロキシ。
- 主要機能:
- 既知の秘密情報を含まれる外部通信を遮断します。
- ツール出力と重複する後続アクションのプロベナンス(出所)を追跡します。
- エージェントが以前読み取ったテキストに含まれる値をコピーしてコマンドを発行しようとした場合、セッション単位で一度だけ確認を求めます(ただし、バックグラウンドでの動作を開始したセッションは例外)。
【事後検証】
- 対象:
とreplay
はローカルセッション記録を読み取るため、Stroq 未導入以前のセッションも対象となります。sent - 注意点:
- 古い値、回転済み値、未知の値は見逃される可能性があります。
- コマンド内で表示されなかったキーでも、スクリプトやファイル、変数を通じて流出している場合があります。
- ローカルでのテキストマッチングは、モデルプロバイダーへの実際の配信を保証するものではありません。
【動作環境】
- ローカルのみ: フックから外部ネットワーク通信が発生しません(古い Task Lock のフックはローカル親コントラーとだけ通信)。テlemetry なし。
【制限事項】
- フックはホストが送信する情報のみを確認可能で、エージェントやバージョンによって異なります。
- マッチングはテキストレベルであり、モデルがゼロから作成したコマンドはソースへの追跡対象外です。
- Stroq はフィルタであり、サンドボックスではありません。ライブフックに依存する前に、インテグレーションの制限事項を確認してください。
リンク集(Docs)
- [ガイド]: インストール・コマンド・動作原理・保証と制限
- エージェント別詳細: 各フックの対応範囲と文書化された制限
- セキュリティ情報: 誤検知・攻撃対応範囲・Cloak と AgentCloak の比較・変更履歴(Changelog)・コントリビューションガイド
コントリビューターへ
コード提供、バグレポート、エージェント連携テスト、ドキュメント改善にご協力いただいた皆様へ、心より感謝申し上げます ❤️