Chapter 16: Name Sanitization — How Names Are Handled¶
← Back to Table of Contents | ← Previous: Event Streaming
Names in config (agent names, model names, MCP client/server names, orchestration names) follow strict rules:
Valid Names¶
- Characters:
[a-zA-Z0-9_-] - Length: 1–64 characters
- Examples:
researcher,fast-model,content_writer_v2
Automatic Sanitization¶
If you use characters outside the valid set (spaces, dots, special characters), kaboo-workflows sanitizes them:
- Invalid characters → underscores
- Consecutive underscores → single underscore
- Leading/trailing underscores → stripped
- Names over 64 characters → truncated
agents:
"My Cool Agent!": # Sanitized to: My_Cool_Agent
system_prompt: "Hi."
A warning is logged when sanitization happens:
WARNING | section=<agents>, original=<My Cool Agent!>, sanitized=<My_Cool_Agent> | sanitized collection key
Reference Updates¶
When a name is sanitized, all references to it throughout the config are updated automatically — entry, model references, mcp lists, orchestration agents, connections, and edges.
Namespace Collisions¶
Agents and orchestrations share a single namespace. You cannot have:
agents:
team:
system_prompt: "I'm an agent."
orchestrations:
team: # ERROR: collides with agent 'team'
mode: swarm
agents: [team]
entry_name: team
ValueError: Name collision between agents and orchestrations: ['team'].
Names must be unique within each section.
Models, MCP servers, and MCP clients each have their own independent namespaces — a model and an agent can share a name (though it's confusing and not recommended).
Tips & Tricks
- Stick to
snake_casefor names. It's valid, readable, and never needs sanitization.- Avoid naming an orchestration and an agent the same thing — even accidentally similar names can confuse you when debugging.