インストール
npm、bun、同梱のインストーラースクリプト、Homebrew、ソースビルドで shk CLI をインストールする方法。
shk は単一の CLI バイナリとして配布されています。
npm
タグ付きの CLI リリースごとに、npm に security-harness-kit パッケージが公開されます。インストールされるコマンドは shk です。
npm install -g security-harness-kit
shk --versionnpm パッケージは同じリリースから dist によって生成されます。インストール時にお使いのプラットフォームに対応するビルド済みリリースアーカイブを取得し、shk コマンドを公開するため、リリースアーカイブと同じプラットフォームをサポートしています。
グローバルインストールなしで一度だけ実行する場合は次のようにします。
npx security-harness-kit scanbun
同じパッケージを bun でも利用できます。パッケージの postinstall スクリプトはインストール時にバイナリをダウンロードします。bun がライフサイクルスクリプトをスキップする場合(信頼していないパッケージに対する bun のデフォルト動作)は、代わりに shk ランチャーが初回実行時に対応するリリースアーカイブを取得するため、インストールはそのまま機能します。
bun add -g security-harness-kit
shk --versionグローバルインストールなしで一度だけ実行する場合は次のようにします。
bunx security-harness-kit scanスクリプトでインストール
macOS と Linux のリリースは、同梱のインストーラーでインストールできます。
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/Kazuki-tam/security-harness-kit/releases/latest/download/shk-cli-installer.sh | shWindows のリリースは PowerShell からインストールできます。
powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://github.com/Kazuki-tam/security-harness-kit/releases/latest/download/shk-cli-installer.ps1 | iex"-ExecutionPolicy Bypass はこの 1 つの PowerShell プロセスにのみ適用されるため、ユーザーのマシンやプロファイルのポリシーを変更することなく、よくあるスクリプトポリシーによる失敗を回避できます。すでに PowerShell を開いている場合は、次の同等の形式でも動作します。
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force; irm https://github.com/Kazuki-tam/security-harness-kit/releases/latest/download/shk-cli-installer.ps1 | iex組織が MachinePolicy または UserPolicy を通じて PowerShell を強制している場合、スクリプトインストーラーはそれでもブロックされることがあります。その場合は、代わりに npm か bun でインストールするか、.zip アーカイブをダウンロードして手動でチェックサムを検証してください(リリースアーカイブをダウンロードするを参照)。
インストーラーは dist によって生成され、最新の対応するリリースアーカイブをダウンロードします。シェルインストーラーは、shk をインストールする前に、選択したアーカイブをリリース時に埋め込まれた SHA-256 チェックサムと照合して検証します。生成される PowerShell インストーラーは現在チェックサム検証を行いません。検証が必要な Windows ユーザーは、.zip アーカイブを手動で検証してください。デフォルトでは、スクリプトインストーラーは Cargo 形式のインストールパス($CARGO_HOME/bin、または CARGO_HOME が未設定の場合は ~/.cargo/bin)を使用します。
リリースアーカイブをダウンロードする
タグ付きのリリースでは、プラットフォームごとのアーカイブ、アーカイブごとのチェックサム、インストーラー、Homebrew フォーミュラ、メンテナー向けの WinGet マニフェスト、CycloneDX SBOM が公開されます。
shk-cli-aarch64-apple-darwin.tar.xz
shk-cli-aarch64-unknown-linux-gnu.tar.xz
shk-cli-x86_64-apple-darwin.tar.xz
shk-cli-x86_64-pc-windows-msvc.zip
shk-cli-x86_64-unknown-linux-gnu.tar.xz
shk-cli-installer.sh
shk-cli-installer.ps1
shk-winget-manifests.zip
shk.rb
shk-cli-npm-package.tar.gz
*-dist-manifest.json
*.sha256
shk-sbom.cdx.json展開する前にアーカイブを検証します。
shasum -a 256 -c shk-cli-x86_64-unknown-linux-gnu.tar.xz.sha256各アーカイブには shk バイナリが含まれています。タグ付きのリリースでは、リリースアセットに対する GitHub アーティファクトアテステーションも生成されます。ダウンロードしたアセットは GitHub CLI で検証できます。
gh attestation verify shk-cli-x86_64-unknown-linux-gnu.tar.xz \
--repo Kazuki-tam/security-harness-kitWindows では、shk-cli-x86_64-pc-windows-msvc.zip とその .sha256 ファイルをダウンロードし、Get-FileHash -Algorithm SHA256 の結果をチェックサムと比較してから、shk.exe を展開して PATH 上のディレクトリに配置します(インストーラーのデフォルトは %USERPROFILE%\.cargo\bin)。
検証済みアーカイブからのインストール
CI やセキュリティ上重要な環境では、固定(ピン留め)したリリースタグからインストールし、バイナリを PATH に配置する前にチェックサムと GitHub アーティファクトアテステーションの両方を検証してください。
version=v0.7.0
target=x86_64-unknown-linux-gnu
asset="shk-cli-${target}.tar.xz"
repo=Kazuki-tam/security-harness-kit
gh release download "$version" -R "$repo" -p "$asset" -p "${asset}.sha256"
shasum -a 256 -c "${asset}.sha256"
gh attestation verify "$asset" -R "$repo"
tmp="$(mktemp -d)"
tar -xJf "$asset" -C "$tmp"
install -m 755 "$tmp/shk-cli-${target}/shk" "$HOME/.cargo/bin/shk"target はお使いのプラットフォームに対応するアーカイブに置き換えてください。ビルドを再現可能でレビュー可能に保つため、CI では latest を避けてください。shk ci init github は、まさにこの検証済みインストールを実行するワークフローを生成します。
Homebrew
タグ付きの CLI リリースごとに、生成された Homebrew フォーミュラが公開 tap Kazuki-tam/homebrew-tap に公開されます。次のコマンドでインストールします。
brew install Kazuki-tam/homebrew-tap/shkHomebrew は homebrew- プレフィックスを省略できるため、短い形式でも動作します。
brew install kazuki-tam/tap/shkフォーミュラは常に最新リリースに追従します。後でアップグレードするには brew upgrade shk を実行してください。
または、フォーミュラ(shk.rb)は各リリースにアセットとして添付されており、tap を使わずに直接インストールすることもできます。
brew install --formula https://github.com/Kazuki-tam/security-harness-kit/releases/latest/download/shk.rbこの方法で固定(ピン留め)したリリースをインストールするには、latest/download を download/<tag>(例: download/v0.7.0)に置き換えてください。
Intel macOS、Apple Silicon macOS、Linux x86_64/aarch64、Windows x86_64 がサポートされています。Scoop マニフェストは現在のリリースパイプラインでは公開されていません。
デスクトップアプリ
デスクトップアプリは CLI とは別に配布されています。リリースは
desktop-vX.Y.Z(または統合された shk-vX.Y.Z)タグから、GitHub Releases 上の shk-desktop_* アセットとして
公開されます。desktop-v0.6.0 以降、macOS ビルドは
Developer ID で署名、公証(notarize)、ステープルされています。Windows インストーラーは現在
Authenticode 署名されていません(下記の
Windows SmartScreen を参照)。
メンテナー向けのリリース手順は desktop-release.md を参照してください。
インストーラーの選択
| プラットフォーム | アセットのパターン | 備考 |
|---|---|---|
| Linux x86_64 | shk-desktop_*_x86_64-unknown-linux-gnu_*.AppImage または *.deb |
AppImage には chmod +x が必要 |
| Linux aarch64 | shk-desktop_*_aarch64-unknown-linux-gnu_*.AppImage または *.deb |
上記と同じ |
| macOS Intel | shk-desktop_*_x86_64-apple-darwin_*.dmg |
署名・公証済み。shk.app を /Applications にドラッグ |
| macOS Apple Silicon | shk-desktop_*_aarch64-apple-darwin_*.dmg |
上記と同じ |
| Windows x86_64 | shk-desktop_*_x86_64-pc-windows-msvc_*setup.exe または *.msi |
現在は未署名 |
安定したダウンロードリンク
desktop-latest リリースには、最新の署名済みデスクトップリリースのインストーラーが常にバージョン番号を含まない名前で用意されているため、次の URL は変わることがありません。
desktop-latest には、安定した名前に対応する shk-desktop.sha256sum と、安定したファイルが現在どのバージョン付きリリースに由来するかを
release_tag で示す shk-desktop-latest.json も含まれています。これらのファイルはそのリリースの
shk-desktop_* アセットとバイト単位で同一であるため、そのリリースの来歴アテステーションで
同様に検証できます。
安定したダウンロードを検証します。
curl -LO https://github.com/Kazuki-tam/security-harness-kit/releases/download/desktop-latest/shk-desktop-aarch64-apple-darwin.dmg
curl -LO https://github.com/Kazuki-tam/security-harness-kit/releases/download/desktop-latest/shk-desktop.sha256sum
awk '$2 == "shk-desktop-aarch64-apple-darwin.dmg"' shk-desktop.sha256sum \
| shasum -a 256 -c -代わりに特定のバージョンに固定するには、そのタグのリリースページ(例:
desktop-v0.7.0)から
バージョン付きの shk-desktop_* アセットと shk-desktop.sha256sum をダウンロードしてください。
macOS
desktop-v0.6.0 以降のインストーラーは Developer ID で署名され、公証されています。
Gatekeeper は回避策なしでそれらを開きます。古い未署名の
早期アクセスビルドをまだ使用している場合は、署名済みの .dmg インストールに置き換えてください。すべてのリリースが同じ
Tauri アップデーター署名鍵を共有しているため、アプリ内アップデーターも既存のインストールを
移行します。
Windows SmartScreen
Windows インストーラーは現在 Authenticode 署名されていないため、SmartScreen が Windows によって PC が保護されました と表示することがあります。リリースのチェックサムとアテステーション(証明)を 信頼できる場合は、詳細情報 → 実行 を選択してください。
ブロックされたアクティビティの通知
アプリを開いている間、サイドバーにあるすべてのプロジェクトの .shk/audit.log を
監視(tail)し、フックが AI アクティビティをブロックすると OS の通知を表示します。これにより、
バックグラウンドで動作しているエージェントの状況を、アプリに切り替えることなく把握できます。
トップバーのベルメニューから通知をオフにしたり、1 種類のブロックだけに
絞り込んだりできます。デフォルトでは両方の種類がオンになっています。
知っておくと役立つ詳細:
- 通知されるのは、プロジェクトがサイドバーに表示された後に記録されたブロックのみです。 既存の履歴が通知の山を生むことはありません。
- 数秒以内に到着したブロックは 1 つの通知にまとめられます。
- 通知のテキストは、ブロックの理由、リスクのあるアクションのカテゴリ、 AI ツールに限定されます。通知はロック画面に表示され、 OS によって保存されるため、ファイルパスは意図的に除外されています。ファイルパスを確認するには ブロックされた AI アクティビティ パネルを使用してください。
- 通知をオフにしてもバナーが止まるだけで、監視は止まりません。アプリを開いている間、 監査パネルは引き続き更新されます。
- 最初のブロック時に OS の通知許可を求められます(macOS では
インストールしたアプリは shk として表示されます。
tauri devバイナリは代わりに ターミナル の識別情報で送信するため、テスト時はターミナルの通知を許可してください)。 - バナーが表示されないのにパネルにブロックが表示される場合は、ほぼ間違いなく macOS が 表示を抑制しています。集中モードと、システム設定 → 通知にある アプリごとの通知スタイルを確認してください。
アプリ内アップデート
デスクトップアプリは、GitHub 上の desktop-latest/latest.json を確認してアップデーターの
メタデータを取得します。アップデーターパッケージは、OS のコード署名とは独立して、常にプロジェクトの Tauri アップデーター
鍵で署名されています。
ソースからビルド
ソースからビルドするには Rust 1.88 以降が必要です。
git clone https://github.com/Kazuki-tam/security-harness-kit.git
cd security-harness-kit
cargo build --releaseリリースバイナリは次の場所に出力されます。
target/release/shkアンインストール
shk には専用の shk uninstall コマンドはありません。削除は 2 つの層に分かれます。CLI バイナリと、使用中に shk が書き込んだプロジェクトまたはユーザーレベルのファイルです。
1. バイナリの削除
shk をインストールした方法に対応する手順を選んでください。
スクリプトインストーラー(デフォルトは ~/.cargo/bin):
rm -f "${CARGO_HOME:-$HOME/.cargo}/bin/shk"Windows(PowerShell インストーラー。CARGO_HOME が未設定の場合、デフォルトは %USERPROFILE%\.cargo\bin):
$BinDir = if ($env:CARGO_HOME) { Join-Path $env:CARGO_HOME "bin" } else { "$env:USERPROFILE\.cargo\bin" }
Remove-Item (Join-Path $BinDir "shk.exe") -ErrorAction SilentlyContinueHomebrew フォーミュラ:
brew uninstall shk
# tap からインストールした場合は、tap も削除できます:
# brew untap Kazuki-tam/homebrew-tapnpm パッケージ:
npm uninstall -g security-harness-kitbun パッケージ:
bun remove -g security-harness-kitソースビルド: クローンしたリポジトリで cargo clean を実行してビルド出力を削除するか、target/release/shk を直接削除してください。そのバイナリを PATH 上のディレクトリにコピーした場合は、コピー先のバイナリも削除してください。
2. プロジェクトアーティファクトの削除
shk は、ディスクに書き込むコマンドを明示的に実行しない限り、プロジェクトファイルを変更しません。それらのコマンドが作成するアーティファクトを以下に示します。不要になったものを各プロジェクトから削除してください。
| 作成元 | パス | 備考 |
|---|---|---|
shk init / shk policy init |
shk.toml |
プロジェクトのポリシーファイル。 |
npm 強化を伴う shk init |
該当する .npmrc、pnpm-workspace.yaml、.yarnrc.yml、bunfig.toml |
プロジェクトのパッケージマネージャー強化ファイル。ファイルに独自のパッケージマネージャー設定も含まれている場合は、ignore-scripts またはパッケージ経過日数ゲート用に追加された設定のみを削除してください。 |
shk scan --audit、監査モードのフック |
.shk/audit.log と .shk/ ディレクトリ |
メタデータのみの監査ログ。 |
shk hooks install |
.git/hooks/pre-commit |
# shk-managed-start / # shk-managed-end で区切られた管理ブロック。shk が唯一の所有者であればファイルを削除し、他の pre-commit ロジックを残す場合は管理ブロックのみを削除してください。 |
shk hooks install-ai(Claude Code) |
.claude/settings.json |
"_shk_managed": true のタグが付いたエントリを削除してください。エントリが残らない場合はファイルを削除してください。--apply-deny または --apply-sandbox を使用した場合は、同じファイルにマージされた permissions.deny と sandbox の設定も確認してください。 |
shk hooks install-ai(Cursor) |
.cursor/hooks.json |
"_shk_managed": true のタグが付いたエントリを削除してください。 |
shk hooks install-ai(Codex) |
.codex/config.toml |
# shk-managed-start / # shk-managed-end で区切られたブロックを削除し、不要であれば features.hooks = true も削除してください。管理ブロックは PreToolUse、PermissionRequest、UserPromptSubmit、PostToolUse を対象とします。--apply-sandbox を使用した場合は、トップレベルの sandbox_mode と approval_policy の値も確認してください。 |
shk hooks install-ai(Copilot) |
.github/hooks/shk-security.json |
コマンドに shk scan --hook-mode copilot を含むエントリを削除してください。 |
shk hooks install-ai(Antigravity) |
.agents/hooks.json |
トップレベルの shk-security エントリを削除してください(そのフックエントリには "_shk_managed": true のタグが付いています)。エントリが残らない場合はファイルを削除してください。 |
shk hooks install-ai(Windsurf) |
.windsurf/hooks.json |
コマンドに shk scan --hook-mode windsurf を含むエントリを削除してください。エントリが残らない場合はファイルを削除してください。 |
shk skills install(Claude Code) |
.claude/skills/shk/SKILL.md |
同梱のスキルファイル。0.3.17 以前でのインストールは .claude/skills/shk.md を使用していました。存在する場合はそのファイルも削除してください。 |
shk skills install(Copilot) |
.github/skills/shk/SKILL.md |
同梱のスキルファイル。 |
shk skills install(Codex / Cursor / Antigravity) |
.agents/skills/shk/SKILL.md |
同梱のスキルファイル。 |
shk skills install(Windsurf) |
.windsurf/skills/shk/SKILL.md |
同梱のスキルファイル。 |
shk ci init github |
デフォルトでは .github/workflows/shk.yml |
生成された GitHub Actions ワークフロー。--output を指定した場合は、代わりにそのカスタムパスを削除してください。 |
対応しているコマンドでは、削除前に --dry-run を付けて再実行すると、プロジェクトで実際に使用されているパスを安全に確認できます。これは shk hooks install-ai、shk skills install、shk ci init github に適用されます。shk hooks install と shk init には dry-run モードがありません。
3. ユーザーレベルファイルの削除
--global でのインストールは、プロジェクトではなくユーザーのホームディレクトリに書き込みます。このマシン上のすべてのプロジェクトで shk を無効にしたい場合にのみ、これらを削除してください。
| 作成元 | パス |
|---|---|
shk hooks install-ai --global --tool claude-code |
~/.claude/settings.json(管理エントリ。加えて明示的に有効化した permissions.deny または sandbox の設定) |
shk hooks install-ai --global --tool codex |
~/.codex/config.toml(管理ブロック。--apply-sandbox を使用した場合はトップレベルのサンドボックス設定も) |
shk hooks install-ai --global --tool cursor |
~/.cursor/hooks.json(管理エントリ) |
shk hooks install-ai --global --tool copilot |
~/.copilot/hooks/shk-security.json(管理エントリ) |
shk hooks install-ai --global --tool antigravity |
~/.gemini/config/hooks.json(管理対象の shk-security エントリ) |
shk hooks install-ai --global --tool windsurf |
~/.codeium/windsurf/hooks.json(--hook-mode windsurf で識別される管理エントリ) |
shk skills install --global --tool claude-code |
~/.claude/skills/shk/SKILL.md(または 0.3.17 以前のレガシーな ~/.claude/skills/shk.md) |
shk skills install --global --tool codex / --tool cursor |
~/.agents/skills/shk/SKILL.md |
shk skills install --global --tool copilot |
~/.copilot/skills/shk/SKILL.md |
shk skills install --global --tool antigravity |
~/.gemini/config/skills/shk/SKILL.md |
shk skills install --global --tool windsurf |
~/.codeium/windsurf/skills/shk/SKILL.md |
管理エントリはプロジェクトインストールと同じマーカーを使用します(JSON ファイルでは "_shk_managed": true、シェルおよび TOML ファイルでは # shk-managed-start / # shk-managed-end)。Copilot と Windsurf はスキーマに準拠したクリーンな JSON を維持しており、--hook-mode <tool> のコマンド文字列で識別されます。--apply-deny と --apply-sandbox によってマージされた設定には個別のタグが付きません。無関係なユーザー設定を誤って破棄しないよう、削除前に確認してください。
4. 保存された Env キーの削除
shk env dotenvx import-keys または shk env key import / shk env encrypt を使用した場合は、保存された秘密鍵が孤立しないよう、バイナリを削除する前にそれらを削除してください。保存された鍵は正規化されたプロジェクトルートにスコープされているため、鍵を保存した各プロジェクトで次のコマンドを実行してください。
shk env dotenvx delete --all
shk env key delete --all[env].secret_store = "keyring"(デフォルト)の場合、dotenvx の鍵は OS の資格情報サービス security-harness-kit/dotenvx の下に、ネイティブの鍵は security-harness-kit/env の下に保存されます。shk をすでに削除している場合は、プラットフォームの資格情報ストアの UI でこれらのサービス名を検索してください。
[env].secret_store = "1password" の場合、鍵は env.onepassword.vault で設定された vault 内に、タグ付き(shk タグ)の 1Password アイテムとして保存されます。アイテムのタイトルは shk:{project_id}:env:DOTENV_PRIVATE_KEY や shk:{project_id}:dotenvx:DOTENV_PRIVATE_KEY_PRODUCTION のような形式です。vault の UI から削除するか、先にキーリングへ移行し直してください。
shk env key migrate --to keyringキーリング側のコピーを確認してから、古いタグ付きアイテムを 1Password から明示的に削除してください。共有される 1Password ソースに対しては、移行元の自動削除は意図的に拒否されます。