nanocoai/nanoclaw · error · Error
target agent group not found: ${to}
Error message
target agent group not found: ${to} What it means
Thrown by `ncl policies set` when getAgentGroup(to) returns null — the target agent group id passed via --to does not exist. Same existence check as the source, applied to the policy's destination side.
Source
Thrown at src/cli/resources/policies.ts:37
},
{ name: 'created_at', type: 'string', description: 'Auto-set.' },
],
operations: { list: 'open' },
customOperations: {
set: {
access: 'approval',
description:
'Require approval for messages from one agent to another. Use --from <agent-group-id> --to <agent-group-id> --approver <user-id>. Only the named approver (or an owner) can approve.',
handler: async (args) => {
const from = args.from as string;
const to = args.to as string;
const approver = args.approver as string;
if (!from) throw new Error('--from is required');
if (!to) throw new Error('--to is required');
if (!approver) throw new Error('--approver is required');
if (from === to) throw new Error('--from and --to must differ (self-messages are never gated)');
if (!(await getAgentGroup(from))) throw new Error(`source agent group not found: ${from}`);
if (!(await getAgentGroup(to))) throw new Error(`target agent group not found: ${to}`);
await setMessagePolicy(from, to, approver, new Date().toISOString());
return { from_agent_group_id: from, to_agent_group_id: to, approver };
},
},
remove: {
access: 'approval',
description: 'Remove an approval policy (back to free flow). Use --from <agent-group-id> --to <agent-group-id>.',
handler: async (args) => {
const from = args.from as string;
const to = args.to as string;
if (!from) throw new Error('--from is required');
if (!to) throw new Error('--to is required');
if (!(await removeMessagePolicy(from, to))) throw new Error('policy not found');
return { removed: { from_agent_group_id: from, to_agent_group_id: to } };
},
},
},View on GitHub (pinned to 294ef2aee8)
Solutions
- Run `ncl groups list` and use the exact --to id
- Recreate the target group if it was removed but still needed
Defensive patterns
Strategy: validation
Validate before calling
const groups = await listAgentGroups(); if (!groups.some(g => g.id === to)) throw new Error(`unknown target group ${to}`); Prevention
- Validate both endpoints against `ncl groups list` before setting policies
- Watch for stale ids in long-lived scripts
When it happens
Trigger: Typo in --to; target group deleted; wrong id namespace (folder name vs DB id).
Common situations: Same as source-not-found: stale references and id confusion.
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
- source agent group not found: ${from}
- policy not found
- ${def.name} not found: ${id}
- group not found: ${id}
- No container config for group: ${id}
AI-assisted analysis of nanocoai/nanoclaw@294ef2aee8 (2026-08-28).
Data as JSON: /api/errors/13be4a499c777637.
Report an issue: GitHub.