multica-ai/multica · error
unknown config key %q (supported: %s)
Error message
unknown config key %q (supported: %s)
What it means
applyConfigSet is a closed switch over the supported config keys (server_url, app_url, workspace_id, device_name, runtime_name, workspaces_root, max_concurrent_tasks, poll_interval, heartbeat_interval, agent_timeout, codex_* timeouts, disable_* toggles, auto_update_check_interval, disable_auto_reload). Any other key hits the default branch; the message lists the supported set via joinKeys(configSetSupportedKeys).
Source
Thrown at server/cmd/multica/cmd_config.go:252
}
case "codex_handshake_timeout":
if err := assignPositiveDuration(&cfg.CodexHandshakeTimeout, key, value); err != nil {
return err
}
case "disable_auto_update":
if err := assignBool(&cfg.DisableAutoUpdate, key, value); err != nil {
return err
}
case "auto_update_check_interval":
if err := assignPositiveDuration(&cfg.AutoUpdateCheckInterval, key, value); err != nil {
return err
}
case "disable_auto_reload":
if err := assignBool(&cfg.DisableAutoReload, key, value); err != nil {
return err
}
default:
return fmt.Errorf("unknown config key %q (supported: %s)", key, joinKeys(configSetSupportedKeys))
}
return nil
}
// assignBool parses value as a strict bool into dst. Shared by the
// disable_* toggles. Empty string clears the field (false).
func assignBool(dst *bool, key, value string) error {
if value == "" {
*dst = false
return nil
}
b, err := strconv.ParseBool(value)
if err != nil {
return fmt.Errorf("%s must be 'true' or 'false' (got %q)", key, value)
}
*dst = b
return nil
}View on GitHub (pinned to 2c0912b6ec)
Solutions
- Read the supported list in the error message and use the exact key (keys are snake_case).
- Check `multica config show` to see current keys and `config set --help` for the authoritative list.
- If the key should exist, upgrade the CLI binary — you may be on an older version.
Example fix
# before multica config set poll-interval 30s # after multica config set poll_interval 30s
Defensive patterns
Strategy: validation
Validate before calling
# validate the key against the supported set before setting
SUPPORTED="server_url app_url workspace_id device_name runtime_name workspaces_root max_concurrent_tasks poll_interval heartbeat_interval agent_timeout codex_semantic_inactivity_timeout codex_handshake_timeout disable_auto_update auto_update_check_interval disable_auto_reload"
echo "$SUPPORTED" | tr ' ' '\n' | grep -qx "$KEY" || { echo "unsupported key: $KEY" >&2; exit 2; }
multica config set "$KEY" "$VAL" Prevention
- Run `multica config set --help` (or read the error's supported list) once per CLI upgrade and update scripts.
- Prefer snake_case keys and never abbreviate; pin automation docs to the CLI version in use.
When it happens
Trigger: `multica config set timeout 30s` (key renamed to agent_timeout), `... poll-interval` (dash vs underscore), or a key from a newer/older CLI version than the running binary supports.
Common situations: Following outdated docs or a teammate's notes; version skew between the CLI binary and documentation; muscle-memory abbreviations of key names.
Related errors
- max_concurrent_tasks must be an integer: %w
- max_concurrent_tasks must be >= 0 (got %d)
- poll_interval must be a Go duration (e.g. 10s, 500ms): %w
- poll_interval must be positive (got %s); use `config set pol
- agent_timeout must be a Go duration (e.g. 10m, 0s to disable
AI-assisted analysis of multica-ai/multica@2c0912b6ec (2026-08-15).
Data as JSON: /api/errors/8f053a7e5e7010fb.
Report an issue: GitHub.