Why did Navide write a hook into ~/.claude/settings.json and open a port for OpenCode?

I noticed a Stop hook in ~/.claude/settings.json that points at Navide, and lsof shows my OpenCode pane listening on a local port. I did not configure either. What are they for, and can I turn them off?


They are push channels: for some CLIs, Navide delivers inter-CLI messages through a way in that is not the terminal input box, and falls back to typing when that does not work out. Everything here is on this machine.

CLI Channel What it needs at launch
opencode tui-httpPOST /tui/append-prompt then /tui/submit-prompt --port <free port> --hostname 127.0.0.1
kilo tui-http, same paths the same, plus KILO_SERVER_PASSWORD
qwen input-file — one appended JSONL record --input-file <per-pane file>
claude Stop hook as a turn ends; rewake hook while idle nothing; the installed hook arms it

Every other CLI is typed into as before.

What the Claude hook does. When a Claude pane’s turn ends with a message waiting, the hook’s answer is the message — it becomes the agent’s next instruction without touching the input box. While the pane sits idle, a parked hook wakes it with the message as a system reminder (shown under Claude Code’s Stop hook feedback label). Capped at 5 in a row per pane; anything else falls back to typing.

The trade-offs, stated plainly.

  • An opencode pane’s port carries no password, because that CLI’s own TUI cannot authenticate against its own server; anything running as you can drive that pane. It is bound to 127.0.0.1. Kilo’s port is protected by a per-pane secret.
  • A qwen pane’s watch file holds each message in the clear until the pane closes; leftovers from a killed backend are swept at the next start.
  • The Claude hook carries a secret kept in an owner-only file in Navide’s app data directory; it marks the hook as one this machine installed and never leaves the machine.
  • A pane you launched with your own --port is left alone.

Switching one off: Settings → CLI Agents → Push channels. Messages to those panes are then typed in, taking effect on running panes without a restart. Claude’s switch rewrites ~/.claude/settings.json immediately; a Claude pane already open keeps the hooks it started with until its next start.

Source: docs/en-US/inter-cli-messaging.md, docs/en-US/privacy.md