nanocoai/nanoclaw · error · Error

Nothing to update — provide at least one of: --provider, --m

Error message

Nothing to update — provide at least one of: --provider, --model, --effort, --image-tag, --assistant-name, --max-messages-per-prompt, --cli-scope, --timezone

What it means

Thrown by the `ncl groups config update` CLI handler when the parsed args produced no recognized scalar update fields, so `updates` is empty. The command refuses to issue a no-op UPDATE against the container_configs table.

Source

Thrown at src/cli/resources/groups.ts:412

        if (args.provider !== undefined) updates.provider = args.provider as string;
        const timezone = parseTimezoneFlag(args.timezone);
        if (timezone !== undefined) updates.timezone = timezone;
        if (args.model !== undefined) updates.model = args.model as string;
        if (args.effort !== undefined) updates.effort = args.effort as string;
        if (args.image_tag !== undefined) updates.image_tag = args.image_tag as string;
        if (args.assistant_name !== undefined) updates.assistant_name = args.assistant_name as string;
        if (args.max_messages_per_prompt !== undefined)
          updates.max_messages_per_prompt = Number(args.max_messages_per_prompt);
        if (args['cli-scope'] !== undefined || args.cli_scope !== undefined) {
          const scope = (args['cli-scope'] ?? args.cli_scope) as string;
          if (!['disabled', 'group', 'global'].includes(scope)) {
            throw new Error('--cli-scope must be one of: disabled, group, global');
          }
          updates.cli_scope = scope;
        }

        if (Object.keys(updates).length === 0) {
          throw new Error(
            'Nothing to update — provide at least one of: --provider, --model, --effort, --image-tag, --assistant-name, --max-messages-per-prompt, --cli-scope, --timezone',
          );
        }

        await updateContainerConfigScalars(id, updates);

        const updated = (await getContainerConfig(id))!;
        return presentConfig(updated);
      },
    },
    'config add-mcp-server': {
      access: 'approval',
      description:
        'Add an MCP server to a group. Requires `ncl groups restart` to take effect. ' +
        'Use --id <group-id> --name <server-name> with either --command <cmd> [--args <json-array>] [--env <json-object>] ' +
        'or --url <url> [--headers <json-object>] (HTTPS, or plain HTTP for localhost / host.docker.internal).',
      handler: async (args) => {
        const id = args.id as string;

View on GitHub (pinned to 294ef2aee8)

Solutions

  1. Re-run with at least one recognized flag: --provider, --model, --effort, --image-tag, --assistant-name, --max-messages-per-prompt, --cli-scope, or --timezone
  2. Check flag spelling against `ncl groups config update` help
  3. Use `ncl groups config add-mcp-server` / `remove-mcp-server` for MCP changes, and `config add-package`/`remove-package` for packages

Example fix

# before
ncl groups config update --id my-group
# after
ncl groups config update --id my-group --model claude-sonnet-4-6
Defensive patterns

Strategy: validation

Validate before calling

const fields = ['provider','model','effort','image-tag','assistant-name','max-messages-per-prompt','cli-scope','timezone'];
const hasAny = fields.some(f => opts[f] !== undefined);
if (!hasAny) throw new Error('config update: no update fields provided');

Try / catch

catch (e) { if (e instanceof Error && e.message.startsWith('Nothing to update')) { /* print usage, exit 2 */ } else throw e; }

Prevention

When it happens

Trigger: Running `ncl groups config update --id <group-id>` with no flags, or with only flags the config-update handler ignores (e.g. a misspelled flag like `--model` vs `--modl`, or JSON-only flags such as add-mcp-server flags).

Common situations: Typo'd flag names silently producing empty args; copy-pasting a `config add-mcp-server` style command against `config update`; assuming `--image` works instead of `--image-tag`.

Understand the failure class

Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.

Related errors


AI-assisted analysis of nanocoai/nanoclaw@294ef2aee8 (2026-08-28). Data as JSON: /api/errors/b254f91f63a2688a. Report an issue: GitHub.