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
- Re-run with at least one recognized flag: --provider, --model, --effort, --image-tag, --assistant-name, --max-messages-per-prompt, --cli-scope, or --timezone
- Check flag spelling against `ncl groups config update` help
- 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
- Build CLI args programmatically and assert the array is non-empty before invoking
- Keep scalar updates and structural changes (MCP/packages) on separate code paths
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
- --${column.name.replace(/_/g, '-')} must be true or false
- ${col.name} must be one of: ${col.enum.join(', ')}
- No container config for group: ${id}
- --cli-scope must be one of: disabled, group, global
- --name is required
AI-assisted analysis of nanocoai/nanoclaw@294ef2aee8 (2026-08-28).
Data as JSON: /api/errors/b254f91f63a2688a.
Report an issue: GitHub.