Custom Configuration
All providers support custom command-line arguments and environment variables. Configure these in Settings → Providers for each agent type.
Custom Arguments
Additional CLI arguments are appended to every call to the agent. Common use cases:- Claude Code:
--model claude-sonnet-4-20250514to specify a particular model - Codex:
-m o3to use a specific OpenAI model - OpenCode:
--model anthropic/claude-sonnet-4-20250514to configure the model
Environment Variables
Environment variables are passed to the agent process. Use these for:- API keys and authentication tokens
- Configuration overrides (e.g.,
CLAUDE_CONFIG_DIRfor multiple Claude accounts) - Provider-specific settings
The
MAESTRO_SESSION_RESUMED variable is automatically set to 1 when resuming sessions - you don’t need to configure this manually.Claude Code
Notes:
- Claude Code’s TUI supports injecting user messages mid-turn (between tool calls in its agentic loop), but this is not available in batch mode (
--print). Maestro uses batch mode, so new messages are queued and sent after the current turn completes via--resume. This is a limitation of the CLI’s batch interface, not Maestro. - Maestro sets
CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1by default for every Claude Code spawn (desktop UI, CLI batch,--live, SSH). This disables Claude Code’sBash run_in_background+Monitorfeature, which is incompatible with Maestro for two reasons: (1) short-lived CLI batch sessions exit before background tasks finish, silently losing results; and (2) the polling wrapper Claude Code generates around each background task can deadlock on a self-matchingpgrep -fpredicate when the watched command regex appears verbatim in the wrapper’s own argv, leaving long-running desktop tabs stuck on a zshuntilloop that can never satisfy its exit condition. Maestro’s multi-tab terminals cover the same use cases (watch a dev server, tail a log) more reliably. To re-enable, exportCLAUDE_CODE_DISABLE_BACKGROUND_TASKS=0from your shell, or set it per-agent under Settings → Providers → Claude Code → Environment Variables. - Ask-back questions require Standard permission mode. In Standard mode Maestro injects a permission relay into Claude Code (API mode) that surfaces tool approvals and
AskUserQuestionask-backs as in-app prompts you answer inline. Full Access passes--dangerously-skip-permissionsand skips the relay, so anAskUserQuestioncall there has nowhere to go: the question never appears and the turn stalls until you stop the agent. A follow-up message won’t recover it either: it only queues behind the stalled turn, which never completes to dispatch it. Read-Only mode also runs without the relay. SSH remote agents can’t use Standard mode at all: a Standard-mode Claude Code spawn over SSH fails loudly (the relay socket is local-only and can’t mediate a remote spawn) rather than downgrading, so SSH agents always run in Full Access or Read-Only, which is why ask-backs never surface there. This is the expected trade-off of bypassing permissions, not a defect; switch the tab to Standard mode when you want ask-back questions to work.
Token Source: Max plan vs. API
Claude Code agents can bill against either your Anthropic API credit or your Claude Max plan quota. Pick the source per-agent under Settings → Providers → Claude Code (or in the New Agent / Edit Agent dialog), and Maestro shows a matching pill on each captured turn.
The TUI Wrapper and Dynamic modes are powered by maestro-p, a small standalone helper that drives Claude Code’s interactive TUI (the mode that draws on your Max plan quota rather than per-token API credit). It ships bundled with the desktop app, so local agents work out of the box.
For SSH remote agents, maestro-p must be installed on the remote host’s PATH, since the TUI runs there rather than on your machine. If it is missing, Maestro disables the Max plan options and falls back to API. Install it from the maestro-p install page, then click Re-check in the agent’s Claude Token Source panel.
Codex (OpenAI)
Notes:
- Codex’s
resumesubcommand doesn’t accept the-i/--imageflag. Images can only be attached when starting a new session. Maestro hides the attach image button when resuming Codex sessions. - Codex has slash commands (
/compact,/diff,/model, etc.) but they only work in interactive TUI mode, not inexecmode which Maestro uses.
OpenCode
Notes:
- OpenCode uses the
runsubcommand which auto-approves all permissions (similar to Codex’s YOLO mode). Maestro enables this via theOPENCODE_CONFIG_CONTENTenvironment variable.
Factory Droid
Notes:
- Maestro drives Factory Droid through its
droid execbatch subcommand with-o stream-jsonoutput. Read-only agents run in the default mode with no auto-approval flags.
Copilot-CLI
Notes:
- Copilot-CLI is multi-model via models.dev. Maestro maps image uploads to temporary-file
@imagementions in the prompt, which also works on resumed sessions.
Hermes
Notes:
- Hermes is Nous Research’s coding agent. Set a documented model override (for example
anthropic/claude-sonnet-4-20250514) under Settings → Providers → Hermes, or leave it blank for the CLI default.
Pi
Notes:
- Pi is a customizable agent harness. Maestro uses its JSON output mode and enforces read-only agents by restricting the tool set to read-only tools.
Qwen3 Coder
Notes:
- Qwen3 Coder is Alibaba’s Qwen Code agent, a Gemini CLI fork. It is multi-provider, so any model id works (for example
qwen3-coder-plusor an OpenAI-compatible id); leave the model blank for the account default.
Oh My Pi
Notes:
- Oh My Pi is a multi-model coding agent, invoked via the
ompCLI.