The store build has its own id, so the native-messaging manifest refused it and the extension reported the app as not running. Chrome now allows the store id and the unpacked development id, in the NSIS hook and in both install scripts; --chrome-id / -ChromeId take a list. Co-Authored-By: Claude Opus 5.5 <[email protected]>
1.9 KiB
1.9 KiB
Native messaging manifests
install.sh (Linux, macOS) and install.ps1 (Windows) fill in the placeholders and register the
manifests for the current user. Chrome allows two ids by default: the Chrome Web Store build
(pmhfoafjoogobhfadaicklhkldgnafmk) and the unpacked development build, pinned to
kogapfibnnpeapfcjkkpgjddbhnjfein by the manifest key in kestrove-browser. Firefox uses [email protected].
Pass --chrome-id a,b / -ChromeId a,b to allow other ids instead.
native-messaging/install.sh # every browser with a profile dir, host from target/
native-messaging/install.sh --browsers chrome --nmh /opt/kestrove/kestrove-nmh
native-messaging/install.sh --user-data-dir /tmp/profile # a Chromium started with --user-data-dir (tests)
native-messaging/install.sh --uninstall
| Browser | macOS (dev only; the Apple app ships its own host) |
|---|---|
| Chrome | ~/Library/Application Support/Google/Chrome/NativeMessagingHosts/ |
| Edge / Brave / Chromium | ~/Library/Application Support/{Microsoft Edge,BraveSoftware/Brave-Browser,Chromium}/NativeMessagingHosts/ |
| Firefox | ~/Library/Application Support/Mozilla/NativeMessagingHosts/ |
| Browser | Linux | Windows |
|---|---|---|
| Chrome | ~/.config/google-chrome/NativeMessagingHosts/app.kestrove.nmh.json |
HKCU\Software\Google\Chrome\NativeMessagingHosts\app.kestrove.nmh → path to json |
| Edge | ~/.config/microsoft-edge/NativeMessagingHosts/ |
HKCU\Software\Microsoft\Edge\NativeMessagingHosts\app.kestrove.nmh |
| Firefox | ~/.mozilla/native-messaging-hosts/app.kestrove.nmh.json |
HKCU\Software\Mozilla\NativeMessagingHosts\app.kestrove.nmh |
| Brave | ~/.config/BraveSoftware/Brave-Browser/NativeMessagingHosts/ |
same key as Chrome |
allowed_origins / allowed_extensions pin the host to your extension id.
That is the first line of defense against other extensions (docs/04 A8).