Desktop App
shk Desktop is a local GUI for project scanning, AI-oriented masking, setup automation, and audit review, with OS notifications when a hook blocks AI activity.
The shk Desktop app provides a local GUI for project scanning, AI-oriented masking, setup automation, and audit review. It bundles the same engine as the CLI, so findings and policies stay consistent between the two.
While it is open it also raises an OS notification when a hook blocks AI activity in any of your projects, so an agent running in the background is visible without switching to the app.
What the app does
- Projects — Open a folder or clone a Git repository, then keep it in the sidebar with a per-project findings badge and last-scan time.
- Scan — Run a full project scan and browse findings by severity, rule, and file.
- Quick Setup — Apply recommended fixes in one step: create
shk.toml, patch.gitignore, install the Git pre-commit hook, install AI tool hooks, encrypt.envfiles, apply npm hardening, and install agent skills. - AI Mask — Paste or open text, Office documents, and text-layer PDFs, mask findings using the selected project's policy, and copy the safe result into your preferred AI app. PDF masking is desktop-only; the CLI
shk maskdoes not accept PDFs. - Blocked AI activity — Review metadata-only audit entries from
.shk/audit.logfor every project in the sidebar. - Open in app — Jump to the project in Cursor, VS Code, Antigravity, Claude Desktop, or ChatGPT.
- Language — The interface is available in English and Japanese.
Keyboard shortcuts: ⌘O open a project, ⌘R run a scan, ⌘M open the mask workspace, ⌘⇧N return to the welcome screen. On Windows and Linux, use Ctrl in place of ⌘.
Installation
The desktop app is distributed separately from the CLI. Releases are published from desktop-vX.Y.Z (or combined shk-vX.Y.Z) tags as shk-desktop_* assets on GitHub Releases. Starting with desktop-v0.6.0, macOS builds are Developer ID signed, notarized, and stapled. Windows installers are currently not Authenticode-signed.
Choose an installer
| Platform | Asset pattern | Notes |
|---|---|---|
| Linux x86_64 | shk-desktop_*_x86_64-unknown-linux-gnu_*.AppImage or *.deb |
AppImage needs chmod +x |
| Linux aarch64 | shk-desktop_*_aarch64-unknown-linux-gnu_*.AppImage or *.deb |
Same as above |
| macOS Intel | shk-desktop_*_x86_64-apple-darwin_*.dmg |
Signed and notarized; drag shk.app to /Applications |
| macOS Apple Silicon | shk-desktop_*_aarch64-apple-darwin_*.dmg |
Same as above |
| Windows x86_64 | shk-desktop_*_x86_64-pc-windows-msvc_*setup.exe or *.msi |
Currently unsigned |
Download from the release page for your tag, for example:
https://github.com/Kazuki-tam/security-harness-kit/releases/tag/desktop-v0.7.0Verify checksums when available:
curl -LO https://github.com/Kazuki-tam/security-harness-kit/releases/download/desktop-v0.7.0/shk-desktop.sha256sum
sha256sum -c shk-desktop.sha256summacOS
Installers from desktop-v0.6.0 onward are Developer ID signed and notarized; Gatekeeper opens them without workarounds. If you still run an older unsigned early access build, replace it with a signed .dmg install. The in-app updater also migrates existing installs because all releases share the same Tauri updater signing keys.
Windows SmartScreen
Windows installers are currently not Authenticode-signed, so SmartScreen may show Windows protected your PC. Choose More info → Run anyway if you trust the release checksum and attestation.
Blocked-activity notifications
While the app is open it tails .shk/audit.log for every project in the sidebar and raises an OS notification when a hook blocks AI activity. The bell menu in the top bar turns notifications off, or narrows them to one kind of block; both kinds are on by default.
Details worth knowing:
- Only blocks recorded after a project appears in the sidebar are announced. Existing history never produces a backlog of notifications.
- Blocks arriving within a few seconds collapse into a single notification.
- Notification text is limited to the block reason, the risky-action category, and the AI tool. File paths are deliberately left out, because notifications render on the lock screen and are persisted by the OS; use the Blocked AI activity panel to see them.
- Turning notifications off stops the banners, not the tailing: the audit panel still updates while the app is open.
- The first block prompts for OS notification permission. On macOS the installed app appears as shk; a
tauri devbinary sends through the Terminal identity instead, so allow Terminal notifications when testing. - No banner but blocks listed in the panel almost always means macOS is suppressing display: check Focus mode, and the per-app notification style in System Settings → Notifications.
In-app updates
The desktop app checks desktop-latest/latest.json on GitHub for updater metadata. Updater packages are always signed with the project Tauri updater key, independent of OS code signing.
Related
- Installation for the CLI, and uninstall steps that also cover desktop artifacts.
shk auditfor the CLI view of the same audit log.- Maintainer release steps live in
desktop-release.mdin the main repository.