ドキュメントはじめに

インストール

npm、bun、同梱のインストーラースクリプト、Homebrew、ソースビルドで shk CLI をインストールする方法。

このページの内容

shk は単一の CLI バイナリとして配布されています。

npm

タグ付きの CLI リリースごとに、npm に security-harness-kit パッケージが公開されます。インストールされるコマンドは shk です。

npm install -g security-harness-kit
shk --version
bash

npm パッケージは同じリリースから dist によって生成されます。インストール時にお使いのプラットフォームに対応するビルド済みリリースアーカイブを取得し、shk コマンドを公開するため、リリースアーカイブと同じプラットフォームをサポートしています。

グローバルインストールなしで一度だけ実行する場合は次のようにします。

npx security-harness-kit scan
bash

bun

同じパッケージを bun でも利用できます。パッケージの postinstall スクリプトはインストール時にバイナリをダウンロードします。bun がライフサイクルスクリプトをスキップする場合(信頼していないパッケージに対する bun のデフォルト動作)は、代わりに shk ランチャーが初回実行時に対応するリリースアーカイブを取得するため、インストールはそのまま機能します。

bun add -g security-harness-kit
shk --version
bash

グローバルインストールなしで一度だけ実行する場合は次のようにします。

bunx security-harness-kit scan
bash

スクリプトでインストール

macOS と Linux のリリースは、同梱のインストーラーでインストールできます。

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/Kazuki-tam/security-harness-kit/releases/latest/download/shk-cli-installer.sh | sh
bash

Windows のリリースは PowerShell からインストールできます。

powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://github.com/Kazuki-tam/security-harness-kit/releases/latest/download/shk-cli-installer.ps1 | iex"
powershell

-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
powershell

組織が MachinePolicy または UserPolicy を通じて PowerShell を強制している場合、スクリプトインストーラーはそれでもブロックされることがあります。その場合は、代わりに npmbun でインストールするか、.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
text

展開する前にアーカイブを検証します。

shasum -a 256 -c shk-cli-x86_64-unknown-linux-gnu.tar.xz.sha256
bash

各アーカイブには shk バイナリが含まれています。タグ付きのリリースでは、リリースアセットに対する GitHub アーティファクトアテステーションも生成されます。ダウンロードしたアセットは GitHub CLI で検証できます。

gh attestation verify shk-cli-x86_64-unknown-linux-gnu.tar.xz \
  --repo Kazuki-tam/security-harness-kit
bash

Windows では、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"
bash

target はお使いのプラットフォームに対応するアーカイブに置き換えてください。ビルドを再現可能でレビュー可能に保つため、CI では latest を避けてください。shk ci init github は、まさにこの検証済みインストールを実行するワークフローを生成します。

Homebrew

タグ付きの CLI リリースごとに、生成された Homebrew フォーミュラが公開 tap Kazuki-tam/homebrew-tap に公開されます。次のコマンドでインストールします。

brew install Kazuki-tam/homebrew-tap/shk
bash

Homebrew は homebrew- プレフィックスを省略できるため、短い形式でも動作します。

brew install kazuki-tam/tap/shk
bash

フォーミュラは常に最新リリースに追従します。後でアップグレードするには brew upgrade shk を実行してください。

または、フォーミュラ(shk.rb)は各リリースにアセットとして添付されており、tap を使わずに直接インストールすることもできます。

brew install --formula https://github.com/Kazuki-tam/security-harness-kit/releases/latest/download/shk.rb
bash

この方法で固定(ピン留め)したリリースをインストールするには、latest/downloaddownload/<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 は変わることがありません。

プラットフォーム 安定した URL
macOS Apple Silicon https://github.com/Kazuki-tam/security-harness-kit/releases/download/desktop-latest/shk-desktop-aarch64-apple-darwin.dmg
macOS Intel https://github.com/Kazuki-tam/security-harness-kit/releases/download/desktop-latest/shk-desktop-x86_64-apple-darwin.dmg
Windows x86_64(NSIS) https://github.com/Kazuki-tam/security-harness-kit/releases/download/desktop-latest/shk-desktop-x86_64-pc-windows-msvc-setup.exe
Windows x86_64(MSI) https://github.com/Kazuki-tam/security-harness-kit/releases/download/desktop-latest/shk-desktop-x86_64-pc-windows-msvc.msi
Linux x86_64 https://github.com/Kazuki-tam/security-harness-kit/releases/download/desktop-latest/shk-desktop-x86_64-unknown-linux-gnu.AppImage または https://github.com/Kazuki-tam/security-harness-kit/releases/download/desktop-latest/shk-desktop-x86_64-unknown-linux-gnu.deb
Linux aarch64 https://github.com/Kazuki-tam/security-harness-kit/releases/download/desktop-latest/shk-desktop-aarch64-unknown-linux-gnu.AppImage または https://github.com/Kazuki-tam/security-harness-kit/releases/download/desktop-latest/shk-desktop-aarch64-unknown-linux-gnu.deb

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 -
bash

代わりに特定のバージョンに固定するには、そのタグのリリースページ(例: 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
bash

リリースバイナリは次の場所に出力されます。

target/release/shk
text

アンインストール

shk には専用の shk uninstall コマンドはありません。削除は 2 つの層に分かれます。CLI バイナリと、使用中に shk が書き込んだプロジェクトまたはユーザーレベルのファイルです。

1. バイナリの削除

shk をインストールした方法に対応する手順を選んでください。

スクリプトインストーラー(デフォルトは ~/.cargo/bin):

rm -f "${CARGO_HOME:-$HOME/.cargo}/bin/shk"
bash

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 SilentlyContinue
powershell

Homebrew フォーミュラ:

brew uninstall shk
# tap からインストールした場合は、tap も削除できます:
# brew untap Kazuki-tam/homebrew-tap
bash

npm パッケージ:

npm uninstall -g security-harness-kit
bash

bun パッケージ:

bun remove -g security-harness-kit
bash

ソースビルド: クローンしたリポジトリで cargo clean を実行してビルド出力を削除するか、target/release/shk を直接削除してください。そのバイナリを PATH 上のディレクトリにコピーした場合は、コピー先のバイナリも削除してください。

2. プロジェクトアーティファクトの削除

shk は、ディスクに書き込むコマンドを明示的に実行しない限り、プロジェクトファイルを変更しません。それらのコマンドが作成するアーティファクトを以下に示します。不要になったものを各プロジェクトから削除してください。

作成元 パス 備考
shk init / shk policy init shk.toml プロジェクトのポリシーファイル。
npm 強化を伴う shk init 該当する .npmrcpnpm-workspace.yaml.yarnrc.ymlbunfig.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.denysandbox の設定も確認してください。
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 も削除してください。管理ブロックは PreToolUsePermissionRequestUserPromptSubmitPostToolUse を対象とします。--apply-sandbox を使用した場合は、トップレベルの sandbox_modeapproval_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-aishk skills installshk ci init github に適用されます。shk hooks installshk 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
bash

[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_KEYshk:{project_id}:dotenvx:DOTENV_PRIVATE_KEY_PRODUCTION のような形式です。vault の UI から削除するか、先にキーリングへ移行し直してください。

shk env key migrate --to keyring
bash

キーリング側のコピーを確認してから、古いタグ付きアイテムを 1Password から明示的に削除してください。共有される 1Password ソースに対しては、移行元の自動削除は意図的に拒否されます。