終了コードと安全性に関する注意
プロセスの終了コード、shk が保存するものと決して保存しないもの、そしてパターンベース検出の限界について説明します。
終了コード
| コード | 意味 |
|---|---|
0 |
アクティブなしきい値以上の検出結果がない、またはコマンドが正常に完了した。 |
1 |
スキャンまたは MCP 監査の検出結果がアクティブなしきい値に達した、または超えた。 |
2 |
ブロッキング AI pre-hook が発動した、またはスキャン/MCP 監査の実行時エラーか設定エラーが発生した。 |
--fail-on オプションと shk.toml の [thresholds] セクションで、どの重要度をしきい値にカウントするかを制御します。しきい値を参照してください。
安全性に関する注意
- スキャンとマスキングはローカルで実行されます。
- ドキュメントスキャンは Office ドキュメントとテキストレイヤー付き PDF からテキストを抽出します。画像のみの PDF には
shkの外部で OCR が必要です。テキストを抽出できない場合、スキャンは情報レベルのスキップ検出結果を報告します。 - Office ドキュメントのマスキングは新しい
.docx、.xlsx、.pptxファイルを書き出し、--outputが必須です。 shk scan --git-historyは Git 参照から到達可能なコミット済み blob をスキャンします。広範囲の履歴スキャンの前に--previewで候補数を確認し、--ref、--since、--max-commitsでスコープを絞り込んでください。shk scan --changed-since <rev>は、現在のブランチで<rev>とのマージベースに対して変更されたファイルをスキャンします。PR の CI に便利です。- 組み込みの検出はパターンベースで、手動調整済みの
shkルールと、生成された gitleaks 由来のsecret.gitleaks.*ルールで構成されます。AI/ローカルワークフローのガードレールとして使い、専用のシークレットスキャンプラットフォームの完全な代替としては使わないでください。 - JSON レポートは
redacted_value: "[REDACTED]"を使います。value_hashは--with-value-hashを渡さない限り省略されます。 - 値ハッシュ(value hash)は、公開されているルール ID をキーとする決定的なフィンガープリントです。エントロピーの低い値は辞書攻撃で復元できる可能性があるため、値ハッシュを含むレポートは機密性の高い成果物として扱ってください。
- フックの監査ログには、件数、ツール名、フックのフェーズ、ルール ID、アクションカテゴリ、表示パスなどのメタデータが含まれます。一致した生の値、プロンプト本文、コマンドテキストは保存されません。
.shk/audit.logを要約するにはshk auditを使います。パスラベルを出力すべきでない場合は--no-pathsを追加してください。- 許可リスト(allowlist)の
value_hashエントリは抑制のための決定的なフィンガープリントであり、暗号学的なシークレット保存ではありません。 - post-tool フックは非ブロッキングです。
doctor ignore --fixは不足しているパターンを.gitignoreに追記します。既存のエントリは削除しません。doctor workflowsはpersist-credentials: falseのないactions/checkoutステップを検出します。--fixにはshk.tomlが必要で、検出されたワークフローをその場で編集します。mask --outputにはshk.tomlが必要で、機密性の高い env ファイルと保護対象のホーム設定ファイルは拒否されます。
Env シークレットストアの脅威モデル
デフォルトでは、shk env は dotenv の秘密鍵を OS キーリングに保存します。チームは、共有ボールトによる配布、集中管理された失効、Business 向け監査ログのために 1Password にオプトインできます。
1Password は主にチーム運用の面での強化(配布、オフボーディング、監査)です。また、ローカルのキーリングに鍵を永続化することも避けられます。デスクトップアプリの認可は CLI セッションの間持続することがあるため、shk env run のたびに生体認証による承認が行われる保証にはなりません。可視性のためには、短いボールト自動ロック時間と 1Password Business のアクセスログを推奨します。
Env シークレットストアおよび shk env key migrate を参照してください。
脆弱性の報告
セキュリティ上の問題は、公開の Issue ではなく、リポジトリの SECURITY.md に記載されたプロセスを通じて非公開で報告してください。