Skip to content

harn permissions

Terminal window
harn permissions [--json] [--no-codex]

Each coding agent keeps its permissions in its own place, in its own words. permissions reads them all and reports what the agents on this computer may do, for the current project. It never changes a setting.

  • Claude Code: the permission mode and the allow, ask and deny rules from the user settings (CLAUDE_CONFIG_DIR, or ~/.claude), the project’s shared .claude/settings.json, its local .claude/settings.local.json, and any managed policy file. Rules from all files apply together; the mode comes from the most specific file that sets one. A mode chosen when Claude Code was started (a launch flag, or the desktop app’s own setting) is not in any file and wins over these.
  • Codex: its effective approval policy, sandbox, whether it trusts this project, and the trust state of each of the project’s hooks. Codex itself answers, through codex app-server (config/read and hooks/list), so the report matches what Codex enforces. That takes a few seconds; --no-codex skips it.
  • Cursor: the CLI’s approval mode, sandbox, and allow and deny lists from ~/.cursor/cli-config.json and the project’s .cursor/cli.json.
  • Desktop control: every live approval on this computer, for any agent or project: who, for what, and until when. The mode and drivers are in harn computer status.

Only permission fields are read back. Account details, environment variables and tokens in those files never appear in the report.

The dashboard’s Permissions page (/permissions) shows the same report with the computer-use status, a one-line meaning for every value, and how to change each setting. Settings that let an agent act with no limit (no approvals, no sandbox) are marked.

One setting can be changed there: your own computer-use mode for this project (off, ask before each task, ask once per session, on, or use the default). The page runs harn computer mode for you, so the CLI’s rules apply: a project whose own mode is off offers no choice, and loosening the mode first shows you the CLI’s confirmation pop-up. The page waits for your answer (up to two minutes) and then says whether the mode changed, you answered No, or the pop-up closed unanswered.

The change is accepted only from a browser on this computer. The dashboard listens on 127.0.0.1, and the page refuses a request that arrives through a tunnel or proxy (a forwarded host or address, or a Cloudflare or Tailscale visitor header) or that was posted from another site. Viewed remotely, the page shows your mode without the control. Everything else on the page stays read-only.

Terminal window
harn permissions # plain summary
harn permissions --json # the full report
harn permissions --no-codex # skip asking Codex