musistudio/claude-code-router · error · Error

Claude App profiles do not support agent arguments.

Error message

Claude App profiles do not support agent arguments.

What it means

Re-thrown from downloadUpdate in the Electron update service when the underlying autoUpdater download fails. The original error is formatted, published to status, and re-thrown so callers see the failure reason.

Source

Thrown at packages/cli/src/cli.ts:128

    printHelp(profileOptions.help ? 0 : 2);
    return;
  }

  const configDir = CONFIGDIR;
  const config = await loadAppConfig();
  assertAvailableGatewayModels(config);
  await applyProfileConfig(config);
  const profile = findProfileForOpen(config, profileOptions.profileRef);
  const surface = profileOptions.surface ?? defaultProfileOpenSurface(profile);
  const resolvedSurface = resolveProfileOpenSurface(profile, surface);
  if (profile.agent === "zcode" && profileOptions.agentArgs.length > 0) {
    throw new Error("ZCode profiles can only open the app; agent arguments are not supported.");
  }
  if (profile.agent === "claude-design") {
    throw new Error("Claude Design profiles can only be opened from CCR Desktop.");
  }
  if (profile.agent === "claude-code" && resolvedSurface === "app" && profileOptions.agentArgs.length > 0) {
    throw new Error("Claude App profiles do not support agent arguments.");
  }
  if (profile.agent === "codex" && resolvedSurface === "app" && profileOptions.agentArgs.length === 0) {
    const state = await startService({
      command: "start",
      daemonChild: false,
      ensureGatewayRunning: true,
      help: false,
      open: false,
      profileManaged: false,
      startGateway: true
    });
    const opened = await callServiceRpc<ProfileOpenResult>(state, "openProfile", [{ profileId: profile.id, surface: "app" }], 30_000);
    process.stdout.write(`${opened.message}\n`);
    return;
  }

  const autoStartProfileGateway = shouldAutoStartProfileGateway(profile, resolvedSurface);
  let profileGatewayLease = autoStartProfileGateway ? acquireManagedProfileGatewayLease() : undefined;

View on GitHub (pinned to 99f24806c6)

Solutions

  1. Check the formatted message for the underlying cause (feed URL, 404, network)
  2. Verify CCR_UPDATE_FEED_URL / publish configuration serves a valid latest.yml reachable from the machine
  3. Test the feed URL with curl from the same network; fix proxy/TLS issues
  4. If disk-related, clear the electron-updater cache directory and free space
  5. Retry the download once transient network failures clear
Defensive patterns

Strategy: retry

Validate before calling

const feed = readEnvString('CCR_UPDATE_FEED_URL');
if (feed) {
  const res = await fetch(feed.replace(/[^/]*$/, 'latest.yml'));
  if (!res.ok) { /* surface feed problem before calling downloadUpdate */ }
}

Try / catch

try {
  await updateService.downloadUpdate();
} catch (error) {
  logger.error('update download failed', formatError(error));
  await backoffRetry(); // network/feed issues are often transient
}

Prevention

When it happens

Trigger: Calling downloadUpdate(); electron-updater throws during download (feed URL unreachable, 404 on latest.yml, network failure, disk write error) and the catch block publishes state:'error' then throws new Error(status.lastError).

Common situations: CCR_UPDATE_FEED_URL pointing at a missing/bad release feed; GitHub rate-limiting or 404 on latest.yml; corporate proxy blocking HTTPS; insufficient disk space or permissions for the download cache; electron-updater version mismatch with the published artifacts.

Related errors


AI-assisted analysis of musistudio/claude-code-router@99f24806c6 (2026-08-27). Data as JSON: /api/errors/29263caea9e06519. Report an issue: GitHub.