ドキュメントリファレンス

終了コードと安全性に関する注意

プロセスの終了コード、shk が保存するものと決して保存しないもの、そしてパターンベース検出の限界について説明します。

目次

終了コード

コード 意味
0 アクティブなしきい値以上の検出結果がない、またはコマンドが正常に完了した。
1 スキャンまたは MCP 監査の検出結果がアクティブなしきい値に達した、または超えた。
2 ブロッキング AI pre-hook が発動した、またはスキャン/MCP 監査の実行時エラーか設定エラーが発生した。

--fail-on オプションと shk.toml の [thresholds] セクションで、どの重要度をしきい値にカウントするかを制御します。しきい値を参照してください。

安全性に関する注意

対象 動作 制約・確認点
ローカル処理 スキャン・マスクはローカルで実行 パターンベースの検出。専用のシークレットスキャン基盤の完全な代替ではない
ドキュメント Office とテキストレイヤー付き PDF から抽出 画像だけの PDF は外部 OCR が必要。抽出できなければ info のスキップ結果
Office マスク --output で新しい .docx / .xlsx / .pptx を作成 shk.toml が必要。機密 env ファイルや保護されたホーム設定への出力は拒否
JSON レポート redacted_value は [REDACTED] value_hash は --with-value-hash 時のみ。公開ルール ID を使う決定的な指紋で、低エントロピー値は辞書攻撃で推定され得る
監査ログ 件数・ツール・フェーズ・ルール ID・操作分類・表示パス 検出値・プロンプト本文・コマンド本文は保存しない。shk audit --no-paths で表示パスを省略
allowlist のハッシュ 特定値の検出抑制に利用 暗号学的な秘密の保管ではない
post-tool フック 操作後の検査 ブロックしない

スキャン範囲と修正対象

操作 範囲・変更内容
scan --git-history Git ref から到達可能なコミット済み blob。まず --preview で件数を確認し、--ref / --since / --max-commits で絞る
scan --changed-since <rev> <rev> との merge base 以降に現在のブランチで変更したファイル。PR の CI 向け
doctor ignore --fix .gitignore に不足パターンを追記。既存行は削除しない
doctor workflows --fix persist-credentials: false のない actions/checkout を修正。shk.toml が必要で、対象ファイルを直接編集

検出には shk 独自ルールと gitleaks 由来の secret.gitleaks.* ルールを使用します。値ハッシュを含むレポートは機密情報として扱ってください。

Env シークレットストアの脅威モデル

デフォルトでは、shk env は dotenv の秘密鍵を OS キーリングに保存します。チームは、共有ボールトによる配布、集中管理された失効、Business 向け監査ログのために 1Password にオプトインできます。

1Password は主にチーム運用の面での強化(配布、オフボーディング、監査)です。また、ローカルのキーリングに鍵を永続化することも避けられます。デスクトップアプリの認可は CLI セッションの間持続することがあるため、shk env run のたびに生体認証による承認が行われる保証にはなりません。可視性のためには、短いボールト自動ロック時間と 1Password Business のアクセスログを推奨します。

Env シークレットストアおよび shk env key migrate を参照してください。

脆弱性の報告

セキュリティ上の問題は、公開の Issue ではなく、リポジトリの SECURITY.md に記載されたプロセスを通じて非公開で報告してください。