--id. An agent has three customization surfaces:
- Personality and rules —
groups/<folder>/CLAUDE.local.md, the agent’s editable persistent memory - Brain — model, reasoning effort, and other container config fields, edited with
ncl - Capabilities — packages and MCP servers, which go through the approval flow covered in self-modification
groups/<folder>/CLAUDE.md. The host regenerates it on every container spawn from a shared base plus skill and MCP fragments, and mounts it read-only into the container. Anything you write there gets clobbered. CLAUDE.local.md is the file that’s yours (and the agent’s).
Personality, the conversational way
The simplest path is to just tell the agent:The
self-customize skill (on every agent by default) teaches the agent that CLAUDE.local.md edits are free — no approval needed — so it writes the rule into its own groups/scout/CLAUDE.local.md through the read-write workspace mount. The current conversation follows the rule immediately because you just said it; the file is what makes it stick for every future session.Check what it wrote:Personality, the direct way
You can edit the same file yourself — useful for longer instructions you’d rather paste than dictate:When does this take effect? Instructions load when a container spawns, so a warm container mid-conversation won’t pick up your edit. Either wait — containers exit after idling, and the next message spawns a fresh one — or force it now:If you’d rather be guided than edit files, run
groups/scout/CLAUDE.local.md
/customize in Claude Code from your NanoClaw checkout. It’s an interactive skill: it asks what you want to change, hands off to a dedicated skill when one exists (/add-telegram, /manage-channels, /manage-mounts, …), and otherwise routes the change to the right surface — the agent group’s memory file for persona, container config for runtime behavior, wirings for triggers.As of v2.1.4 the
/customize skill’s own text still points persona edits at the composed groups/<folder>/CLAUDE.md. Follow this tutorial instead: edit CLAUDE.local.md — anything written to the composed file is clobbered at the next spawn.Swap the brain
Model and reasoning effort live in the agent group’s container config, not in any file. Update them with A cheap-and-fast Scout (
ncl:--modeltakes an alias (sonnet,opus,haiku) or a full model ID. Unset means the SDK default.--effortis one oflow,medium,high,xhigh,max.
--model haiku --effort low) is great for routing or lookup duty in a multi-agent swarm; keep opus with higher effort for agents that do real work. The same command also takes --assistant-name, --provider, and more — see the container config reference.Verify
Ask Scout something and confirm the haiku rule and the model change both took:You can also peek at the composed file to see why it’s off-limits:It’s nothing but a header and imports — the shared base plus per-skill fragments. Your text isn’t in it because it doesn’t need to be: Claude Code auto-loads
CLAUDE.local.md alongside CLAUDE.md on every spawn.What you changed
Two surfaces, two mechanisms: personality went into a file the agent and you co-own (CLAUDE.local.md), the brain went into a DB row (container_configs). Both are read at container spawn — edits apply to the next container, and ncl groups restart forces one now. The third surface — capabilities — works differently because it can change what the agent is able to do, so it goes through admin approval.
Next steps
- Self-modification — let the agent install packages and MCP servers, with you as the approval gate
- Container config reference — every field, including skills selection and extra mounts
- Multi-agent swarm — put your customized agents to work together