Skip to content

Agents

Providers & logins

Connect Claude Code, Codex, Cursor, OpenCode, OpenRouter and DeepSeek, keep their CLIs current, and run chats on more than one login.

Codz has no model of its own. It runs the coding agents you already use, on your own accounts and plans: four command-line agents that keep their own logins, and two model providers you connect with a key.

Unless a section says otherwise, the settings here are in Settings ▸ Models & providers. Open Settings with ⌘,.

The six providers

ProviderWhat Codz runsHow you sign in
Claude CodeThe claude CLIThe CLI’s own login, claude auth login
CodexThe codex CLIThe CLI’s own login, codex login
CursorThe cursor-agent CLIThe CLI’s own login, cursor-agent login
OpenCodeThe opencode CLIThe providers you connected with opencode auth login
OpenRouterCodz’s own agent, on the OpenRouter model you pickYour OpenRouter account, connected in Codz
DeepSeek (Preview)The DeepSeek Harness runtime, dsh-jsonrpc-agentA DeepSeek API key you paste in Codz

Codz doesn’t hold the four CLIs’ logins: each CLI keeps its own where it always has. The keys you give Codz, for OpenRouter, DeepSeek or a second Cursor login, are kept in this Mac’s Keychain and never sent to Codz’s servers. Every chat runs on your own account and counts against that provider’s plan or billing.

Provider status

The first group, Provider status, has a row for each provider:

  • CLI ready, with the version and where Codz found the CLI, or CLI missing.
  • For OpenRouter, Connected or Not connected. For DeepSeek, CLI missing, Key missing or Ready.
  • Update available when a newer release is out. Claude Code, Codex and Cursor get an Update button. Update needed means Codz needs a newer version than the one installed.

To look again for CLIs, open Settings ▸ General and click Check now next to Re-run environment check, or run codz doctor in Terminal (see Commands).

How Codz finds a CLI

Codz uses the first copy it finds, in this order:

  1. A version you installed from Codz (see Install and update).
  2. /usr/local/bin, /opt/homebrew/bin, ~/.local/bin, ~/.npm-global/bin, ~/.bun/bin and /usr/bin, then the rest of the app’s PATH.
  3. Where the provider’s own installer puts it: ~/.opencode/bin for OpenCode, and Codex’s standalone install in ~/.codex.
  4. A copy that comes with an app: the Cursor CLI the Cursor app keeps up to date, and the Codex CLI inside ChatGPT.app.

Codz opened from the Finder doesn’t read your shell’s startup files, so a folder added to PATH only in ~/.zshrc isn’t searched. While a provider is missing, Codz looks again each time you come back to the app.

Set up a missing provider

When a chat’s provider isn’t ready, a card above the composer says what is missing. Your draft stays where it is.

  • Set up Claude (or Codex, or Cursor): the CLI wasn’t found. Install Claude installs it from Codz; see below.
  • Set up OpenCode, or DeepSeek without its runtime: Setup guide opens the install instructions, at opencode.ai or the DeepSeek Harness repository.
  • Connect OpenRouter or Connect DeepSeek: the account or key is missing. Add it in Settings ▸ Models & providers, as described below.

Check again looks for the provider once more, and Choose model opens the model picker so you can run the chat on another provider instead.

Install and update

Codz can install and update Claude Code, Codex and Cursor for you. It downloads the provider’s official installer, installs the CLI into a folder of its own and checks the version it reports. Your own installation, your PATH and your package manager are left alone, and new turns use the new version.

  • Install Claude (and the others) on the setup card installs the latest release.
  • Update in Provider status installs the newest release when one is out.
  • Local CLI versions shows each of the three with the version in use and where it is. Update installs the latest, Choose version… switches between Existing installation and the versions Codz installed, and Restore previous goes back to the one before. For Cursor, Choose version… also offers the versions Cursor kept on this Mac, marked Retained on Mac.
  • When a Codex model needs a newer CLI, the turn stops with Codex needs an update and an Update Codex… button.

Codz won’t replace a CLI while one of its chats is working; the button says “Wait for the running Claude task to finish.” To know what is current, Codz asks codz.com once a day; the request doesn’t include your account or the versions you have installed.

Sign in

Claude Code and Codex. The provider’s accounts group starts with a CLI login row showing Signed in or Not signed in, as the CLI itself reports it. Sign in runs the CLI’s own login and finishes in your browser; the row shows Finish in your browser and Cancel until you do.

Cursor and OpenCode. Sign in with the CLI in Terminal: cursor-agent login or opencode auth login. Codz can’t read their sign-in status, so their rows don’t show one.

OpenRouter

To connect your OpenRouter account:

  1. In the OpenRouter group, click Connect OpenRouter.
  2. Sign in on openrouter.ai in the browser tab that opens, and approve the request.
  3. Back in Codz, the Account row shows the key it connected with.

If a browser sign-in doesn’t work, create a key at openrouter.ai/keys and click Paste key… on the API key row instead.

Once you’re connected:

  • Spend on this key shows what the key has spent, and its limit if you set one. Free tier means the account has bought no credits, which paid models need.
  • Models counts the models you can pick. Only models that can use tools are listed. Refresh reloads the list.
  • Default model takes a full OpenRouter id, such as anthropic/claude-sonnet-5. Leave it blank to pick a model in each chat.
  • Disconnect makes Codz forget the key. It stays active on your OpenRouter account until you delete it at openrouter.ai/keys.

OpenRouter chats are billed to your OpenRouter account. For these chats Codz runs the agent itself: the model reads files, edits them and runs commands through Codz, and each edit and command waits for your approval unless the chat is set to Full auto.

DeepSeek

DeepSeek is a preview, and needs two things:

  1. The DeepSeek Harness JSON-RPC runtime, dsh-jsonrpc-agent, installed from the DeepSeek Harness repository. The Runtime row shows where Codz found it.
  2. An API key from platform.deepseek.com/api_keys, saved with Paste key… on the Paste key row. Codz doesn’t use a DeepSeek CLI login.

The key is handed only to the DeepSeek Harness process a chat runs, and requests are billed to your DeepSeek account. A blank Default model uses deepseek-v4-flash. DeepSeek joins Settings ▸ Default models once both parts are in place.

More than one login

Claude Code, Codex, OpenCode and Cursor can each run chats on several logins, such as a work account and a personal one. Each has an accounts group, such as Claude accounts: the CLI’s own login first, then the ones you add.

  1. Click Add account… on the Add Claude account row (for Cursor, Add API key…).
  2. Give it a name for yourself, such as “Work”, and click Add.
  3. Sign in from its row. Claude Code and Codex finish in your browser; for OpenCode, Sign in… runs opencode auth login in Terminal.

An added Claude Code, Codex or OpenCode login lives in a folder of its own, where its chats keep their transcripts. For Claude Code and Codex the folder starts with a copy of the CLI’s settings, never its login. A second Cursor login is a user API key from the Cursor dashboard, because the CLI’s browser login can’t be duplicated. Codz keeps the key in the Keychain and never shows it again.

  • Use for new chats makes a login the default for new chats; it then shows Default for new chats.
  • In a chat, the model picker shows an Account row once its provider has a second login. Each login lists its plan limit where Codz can read one, and says whether it has this chat or starts a new context, carrying the conversation over as in a handoff.
  • The model chip in the composer names the account after the effort.
  • Remove asks first. For a folder-based login you can keep its folder to sign back in later, or delete it. Chats on a removed login go back to the CLI’s own login and start a new context.

Codex reports plan limits for each login. Claude Code’s plan meters describe the CLI’s own login only.

When a login stops working

When Claude Code or Codex can’t use its login, the turn stops and says why where it stopped, such as “Your Claude login expired. Sign in again to continue.” A banner above the composer carries the fix:

  1. Click Sign In. Codz runs the CLI’s login, and the banner asks you to finish signing in in your browser.
  2. Once you’re signed in, the banner says “You’re signed in to Claude again”. Click Try Again to resend the message that stopped.
  • When Claude Code couldn’t refresh its login because another Claude Code process was refreshing it, the banner offers Try Again instead. This usually clears within a minute.
  • When the CLI already reports that you’re signed out, the banner appears before you send, since the turn would stop at its first request.
  • With more than one login, the notice names the one that failed, such as “Claude · Work”.

Cursor and OpenCode sign-in failures, and credentials Codz doesn’t manage (Bedrock or Vertex, an ANTHROPIC_API_KEY set outside Codz, or an organization that turned off subscription access), show the provider’s own error instead, with no Sign In button. Fix those in the CLI itself.

Provider settings

Each CLI provider has a group of its own settings:

GroupSettings
ClaudeDefault model, Effort, Prompt suggestions, Safe mode, Show chats in Claude Desktop, Claude in Chrome, Bypass permissions
CodexDefault model, Config profile, Reasoning effort, Ephemeral sessions
CursorDefault model
OpenCodeDefault model
  • A blank Default model leaves the choice to the CLI. Models & loadout explains how these defaults meet the loadout.
  • Safe mode turns off CLAUDE.md, skills, plugins, hooks, MCP servers and other customizations, for troubleshooting.
  • Show chats in Claude Desktop adds each Claude chat to Claude Desktop’s sidebar after its first turn. It is off by default, because Claude comes to the front when a chat is added.
  • Bypass permissions lets Claude run commands without asking. See Modes & approvals.
  • Continue in Claude (and the others) opens the provider’s own app, for the settings that live there.
  • Configuration on disk opens each CLI’s configuration folder: ~/.claude, ~/.codex, ~/Library/Application Support/Cursor/User and ~/.config/opencode.
  • New models lists newly announced Claude Code, Codex and Cursor models, and whether your installed CLI lists them yet: Listed by provider, Announced, Rolling out or Update required, with a Source link.

Troubleshooting

A model in the picker is dimmed with “The claude CLI isn’t installed.” Codz can’t find that CLI. Install it (see Set up a missing provider), or check where it lives against How Codz finds a CLI.

“Codz can’t unlock the saved key on this build of the app.” Codz can no longer read the OpenRouter or DeepSeek key it saved. Click Reconnect for OpenRouter, or paste the DeepSeek key again. Nothing was sent anywhere.

The OpenRouter sign-in fails. “Codz could not open a local port to finish the sign-in” and “The sign-in timed out” both leave you disconnected; try again, or paste a key from openrouter.ai/keys.

An install or update fails. The sheet says why: the installer couldn’t be downloaded, didn’t finish, or installed a CLI that didn’t report the expected version. Your existing installation is untouched.

A Codex account says Same ChatGPT login. Both Codex logins are signed in to one ChatGPT account, so they share one allowance. Sign in again on that row with a different account.

A Cursor account’s API key is missing from the Keychain. The row says Key missing. Paste the key again on that account’s row.