Skip to content

Harnesses

A harness is the coding agent Harmonic runs to do the work. Harmonic drives four, all over ACP, and they’re interchangeable: pick one as a Workspace or Task default and Harmonic uses it for that work.

HarnessWhat it is
Claude CodeAnthropic’s Claude Code CLI.
CodexOpenAI’s Codex CLI.
CopilotGitHub Copilot’s CLI.
OpenCodeThe OpenCode CLI (open-source, many providers).

Harmonic doesn’t manage agent accounts. Each harness uses its own CLI login, so you sign in once on the machine Harmonic runs on with your own subscription, and Harmonic reuses that session. An API key set in the harness’s env works instead of a login where you’d rather use one.

HarnessSign in withOr set
Claude Codeclaude CLI loginANTHROPIC_API_KEY
Codexcodex CLI loginOPENAI_API_KEY
Copilotcopilot login (your Copilot subscription)a PAT with the Copilot Requests permission (COPILOT_GITHUB_TOKEN)
OpenCodeopencode auth loginthe provider key that login stores

For Copilot on a shared or headless box the login may live in the system keychain, so run copilot login once as the user Harmonic runs as, or set a token. If a harness isn’t signed in, its work stops with an authentication error rather than running.

Each harness has a block on the settings page. The defaults work out of the box; the settings you’re likely to touch are the models:

SettingWhat it’s for
How it launchesHow Harmonic starts the agent. Set correctly out of the box; change only for a custom install.
EnvironmentExtra values passed to the agent, e.g. an API key instead of a CLI login.
ModelsThe models you can pick for this harness.
Default modelThe one used when a ticket doesn’t choose its own.
Permission modeHow an unattended Attempt handles the harness’s permission requests.

Pick a harness and model per ticket, or set them as a workspace default; see Settings & overrides.

Harmonic shows a live dollar cost on every agent’s work, based on the model it used. It knows the prices of the models these harnesses ship with; if you add one it doesn’t know, add its price too, or that work shows as cost-incomplete rather than a misleading zero. See Settings & overrides.

A note on Copilot: on an auto-only plan it may accept a model you pick and then quietly serve a different one. Harmonic flags that on the ticket so you can see the swap rather than being misled about which model ran.

The Permission mode control applies to unattended Attempts only: work Harmonic starts from a ticket while no one is there to approve a prompt. It does not change a Conversation, where a person can choose whether to approve actions as they happen.

The modes differ by Harness.

HarnessMode and defaultWhat it means
Claude CodeAuto (default) or Bypass PermissionsAuto lets Claude’s permission classifier decide which actions need approval. Bypass Permissions disables that classifier and runs without permission prompts.
CopilotAgent (default), Plan, or AutopilotHarmonic shows the modes Copilot advertises over ACP. The available modes can change with the installed Copilot version.
CodexNo settingUnattended work runs with full access.
OpenCodeNo settingUnattended work runs with full access.

Codex and OpenCode have no control because their unattended runs are already configured for full access. For Claude, Auto is the default, so existing setups keep the classifier unless you deliberately choose Bypass Permissions.

ACP controls this separately from a harness’s command-line flags. In particular, Claude’s --dangerously-skip-permissions CLI flag is ignored when Harmonic drives it over ACP. Choose Bypass Permissions in the Harness settings instead.

Harmonic records the effective permission mode on each Attempt’s timeline. If a configured mode is unavailable from the installed harness, it selects a suitable unattended mode and marks the requested-to-effective fallback there.