How native messaging works

An extension sends a message to a named native host. The browser looks up a JSON manifest installed on the operating system, launches the registered executable and pipes JSON messages between the extension and the program. The host manifest explicitly allows communication with specific extensions.

Because the native program runs with your user privileges, the permission can expose powerful desktop integrations that no ordinary API permission offers.

  • Native hosts are separate programs registered on your OS
  • Communication is JSON messages, not raw shell access
  • Developers install the host manifest outside the browser
  • One host manifest can allow specific extensions only

Related pages:manifest V3 permissions list explainedChrome permissions checker

Why it deserves a closer look

The extension itself stays sandboxed, but the program it talks to does not. A compromised or lazy native host can turn messages into actions outside the browser, and the browser permission prompt says nothing about what that program does.

Legitimate users of nativeMessaging include password managers, antivirus plugins and enterprise device integrations. The capability is proportionate there because the companion software is the product.

Related pages:extension permission analyzerexternally_connectable explained

How to verify the pairing

Read the manifest to confirm nativeMessaging is requested, then look in the code for the native host name it connects to. Check whether the publisher documents the companion application and whether that application is signed and distributed by the same publisher.

If an update changes or adds a native host name, treat it like a new endpoint: compare versions and read the release notes before accepting the change.

  • Find the nativeMessaging entry in manifest.json
  • Search the code for the host name string
  • Check the publisher's documentation for the companion app

Related pages:check Chrome extension source codecompare Chrome extension versions