Orion Version: 1.0.4 (build 143)
macOS Version: 26.3 (build 25D125)
When a Chrome or Firefox extension uses browser.runtime.sendNativeMessage() or browser.runtime.connectNative() to communicate with a native messaging host, Orion successfully launches the host process and delivers messages to its stdin, but never reads the host's stdout responses back to the extension. This causes all native messaging calls to time out.
Steps to Reproduce:
Install a Chrome extension that uses the nativeMessaging permission (e.g., download a .crx and drag into Manage Extensions with Developer Mode enabled)
Configure a native messaging host in ~/Library/Application Support/Google/Chrome/NativeMessagingHosts/ with a valid JSON manifest:
json
{
"name": "test_host",
"description": "test native messaging host",
"path": "/path/to/host/binary",
"type": "stdio",
"allowed_origins": ["chrome-extension://<extension-id>/"]
}
Have the extension call browser.runtime.sendNativeMessage("test_host", {type: "ping"})
The native host process receives the message on stdin and writes a JSON response to stdout
The extension never receives the response - the Promise/callback times out
Evidence:
The native messaging host has its own log file which confirms:
- The host process IS launched by Orion
- Messages ARE received on stdin and parsed correctly
- Responses ARE generated and written to stdout via sys.stdout.buffer.write() + sys.stdout.flush()
Host log (responses generated successfully):
2026-02-20 15:57:43,014 [host] <INFO> Processing command: ping
2026-02-20 15:57:43,339 [host] <INFO> Ping response generated successfully
Extension log (never receives the response):
[INFO] [ensurePort] Native Messaging: Creating new native port
[INFO] [ensurePort] Native Messaging: New port created with UUID: 165ed635...
[INFO] [determineConnectionType] Testing TransactionId support with sendNativeMessage ping...
[ERROR] [determineConnectionType] Error testing TransactionId support: Error: sendNativeMessage ping timeout after 1000ms
Affected APIs:
- browser.runtime.sendNativeMessage() - response never delivered
- browser.runtime.connectNative() - port created, messages sent, but onMessage listener never fires with responses
Tested with both:
- Chrome extension (.crx, Manifest V3) - same result
- Firefox extension (.xpi) - same result
Expected Behavior: The extension should receive the JSON response from the native messaging host's stdout.
Actual Behavior: The host process receives and processes messages, writes valid responses to stdout, but Orion never delivers them to the extension. Both sendNativeMessage and connectNative are affected.
Notes:
- The same extensions and native messaging host work correctly in Chrome, Firefox, and Safari
- Orion correctly reads the native messaging host manifest files from Chrome/Mozilla paths
- Orion correctly launches the host binary and writes to its stdin
- Only the stdout -> extension response path is broken
As above.
1.0.4 (build 143)
Tahoe (26)