nanocoai/nanoclaw · error · Error
No container config for group: ${id}
Error message
No container config for group: ${id} What it means
`ncl groups config get --id <id>` found no row in the container_configs table for that group. Configs are normally created alongside the group (or backfilled from legacy container.json by src/backfill-container-configs.ts at startup), so a missing row means the group id is wrong or the config was never provisioned.
Source
Thrown at src/cli/resources/groups.ts:365
}
: undefined,
);
return { restarted: 1, rebuilt: !!args.rebuild };
}
// From the host: restart all running containers in the group
const count = await restartAgentGroupContainers(id, 'restarted via ncl', message);
return { restarted: count, rebuilt: !!args.rebuild };
},
},
'config get': {
access: 'open',
description: 'Show the container config for a group. Use --id <group-id>.',
handler: async (args) => {
const id = args.id as string;
if (!id) throw new Error('--id is required');
const row = await getContainerConfig(id);
if (!row) throw new Error(`No container config for group: ${id}`);
return presentConfig(row);
},
},
'config update': {
access: 'approval',
description:
'Update container config scalar fields. Changes are saved but do NOT take effect until you run `ncl groups restart`. ' +
'Use --id <group-id> and any of: --provider, --model, --effort, --image-tag, --assistant-name, --max-messages-per-prompt, --cli-scope, ' +
'--timezone (IANA id like "Europe/Lisbon"; "" clears back to the install default; scheduled-task times follow it immediately, message display after restart).',
handler: async (args) => {
const id = args.id as string;
if (!id) throw new Error('--id is required');
const row = await getContainerConfig(id);
if (!row) throw new Error(`No container config for group: ${id}`);
const updates: Partial<
Pick<
ContainerConfigRow,View on GitHub (pinned to 294ef2aee8)
Solutions
- Verify the id: `ncl groups list` and use the exact ag-<uuid>
- If the group is legacy (v1/migrated), restart the host so backfill-container-configs migrates any groups/<folder>/container.json into the DB, then retry
- If the row is genuinely missing, `ncl groups config update --id <id> --provider claude` will also fail — recreate or manually insert the config row
Example fix
# before ncl groups config get --id my-agent-folder # after ncl groups list ncl groups config get --id ag-1234abcd-...
Defensive patterns
Strategy: try-catch
Validate before calling
const cfg = await getContainerConfig(id);
if (!cfg) { /* restart host to trigger backfill, or fix the id */ } Type guard
const hasConfig = (r: unknown): r is ContainerConfigRow => !!r && typeof (r as any).group_id === 'string';
Try / catch
try { await getConfig(id) } catch (e) { if (e instanceof Error && e.message.startsWith('No container config for group:')) { await restartHostForBackfill(); return getConfig(id); } throw e; } Prevention
- Restart the host once after v2 migration so backfill-container-configs runs
- Validate ids against `ncl groups list` before config queries
When it happens
Trigger: Passing a nonexistent/mistyped group id; passing the folder name instead of ag-<uuid>; querying a group created by an older path before the backfill ran (host not restarted since v2 migration); a group whose config row was manually deleted from the DB.
Common situations: Post-v2-migration installs where backfill hasn't run yet; copy/paste id truncation; scripting against a fresh DB copy that has agent_groups rows but not matching container_configs rows.
Understand the failure class
Background: "Not found" and "does not exist" errors: why "Task not found", "No such folder", and "Can't find" fire when a lookup comes back empty — this error's family across 14 libraries.
Related errors
- ${def.name} not found: ${id}
- group not found: ${id}
- --cli-scope must be one of: disabled, group, global
- Nothing to update — provide at least one of: --provider, --m
- MCP server "${name}" not found
AI-assisted analysis of nanocoai/nanoclaw@294ef2aee8 (2026-08-28).
Data as JSON: /api/errors/e58b053c27aa5e84.
Report an issue: GitHub.