Plannotator is configured through environment variables and hook/plugin configuration files. No config file of its own is required.

Environment variables

VariableDefaultDescription
PLANNOTATOR_REMOTEauto-detectSet to 1 or true to force remote mode. Uses a fixed port and skips browser auto-open.
PLANNOTATOR_PORTrandom (local) / 19432 (remote)Fixed server port. Useful for port forwarding in remote environments.
PLANNOTATOR_BROWSERsystem defaultCustom browser or script to open the UI.
PLANNOTATOR_SHAREenabledSet to disabled to turn off URL sharing entirely.
PLANNOTATOR_SHARE_URLhttps://share.plannotator.aiPoint share links at a self-hosted portal.
CLAUDE_CONFIG_DIR~/.claudeRespected by the install script when placing hooks.

See the environment variables reference for full details, port resolution order, and examples.

Hook configuration (Claude Code)

The hook is defined in hooks.json inside the plugin directory. When installed via the marketplace, this is managed automatically. For manual installation, add to ~/.claude/settings.json:

{
  "hooks": {
    "PermissionRequest": [
      {
        "matcher": "ExitPlanMode",
        "hooks": [
          {
            "type": "command",
            "command": "plannotator",
            "timeout": 1800
          }
        ]
      }
    ]
  }
}

The matcher targets the ExitPlanMode tool specifically. The timeout is in seconds (30 minutes) — plan reviews can take a while.

Plugin configuration (OpenCode)

OpenCode uses opencode.json to load the plugin:

{
  "$schema": "https://opencode.ai/config.json",
  "plugin": ["@plannotator/opencode@latest"]
}

This registers the submit_plan tool. Slash commands (/plannotator-review, /plannotator-annotate) require the CLI to be installed separately via the install script.

Plan saving

Approved and denied plans are saved to ~/.plannotator/plans/ by default. You can change the save directory or disable saving in the Plannotator UI settings (gear icon).

Remote mode

When working over SSH, in a devcontainer, or in Docker, set PLANNOTATOR_REMOTE=1 and PLANNOTATOR_PORT to a port you’ll forward. See the remote & devcontainers guide for setup instructions.

Custom browser

PLANNOTATOR_BROWSER accepts an app name (macOS), executable path (Linux/Windows), or a custom script. This is useful for opening Plannotator in a specific browser or handling URL opening in unusual environments.

# macOS
export PLANNOTATOR_BROWSER="Google Chrome"

# Linux
export PLANNOTATOR_BROWSER="/usr/bin/firefox"

# Custom script
export PLANNOTATOR_BROWSER="/path/to/my-open-script.sh"

Disabling sharing

Set PLANNOTATOR_SHARE=disabled to remove all sharing UI — the Share tab, copy link action, and import review option are all hidden. Useful for teams working with sensitive plans.

To self-host the share portal instead, see the self-hosting guide.