Skip to main content
Custom agents are specialized AI assistants that you can configure to perform specific tasks and workflows. Each agent can have its own prompt, model and tool permissions. Symbiotic Code has built-in agents for common tasks, but you can also create your own custom agents or customize the built-in ones.

Agent types

Each agent has a mode:

Built-in agents

Symbiotic Code also uses hidden internal agents (title, summary, compaction) for session titles, summaries and context compaction. You can override their model or prompt like any other agent.

Creating agents

Create a .md file in one of these directories: The file path (without .md) becomes the agent name, and the file body becomes the agent’s system prompt. The singular folder name agent/ also works.
~/.config/symbiotic/agents/review.md
Here review.md creates a review subagent that primary agents can delegate to, and that you can invoke with @review.
Invalid frontmatter values (for example color: blue or mode: agent) prevent Symbiotic Code from loading its configuration. Migrating from Claude Code? See Migrating for how to convert agent files.

JSON config

You can also define agents under the agent key in symbiotic.json, .symbiotic/symbiotic.json or ~/.config/symbiotic/symbiotic.json:
symbiotic.json
{file:path} inserts the content of a file, resolved relative to the config file (~/ is also supported). {env:VAR} inserts an environment variable.

Generate an agent with the CLI

This interactive command asks where to save the agent (current project or global; global only outside a git repository), what it should do, which tools to enable and its mode, then uses the LLM to generate the agent name, description and system prompt. The file is written to .symbiotic/agent/ or ~/.config/symbiotic/agent/. You can also pass everything as options to run it non-interactively:
Use symbiotic agent list to list all available agents with their mode and permissions.

Options

Any other key is passed to the model provider as an option, like the keys in options.

Permissions

The permission field accepts the same values as the top-level tool permissions: allow, ask or deny for a tool, or a map of patterns where the last matching rule wins.
.symbiotic/agents/git-helper.md
A tool denied with "*": deny is not sent to the model at all. Use the task permission to control which subagents an agent can call, by subagent name:
symbiotic.json

Customize built-in agents

Configure a built-in agent with its name as the key. Only the fields you set are changed:
symbiotic.json
Set disable: true to remove an agent. The same works for custom agents defined in another config file.

Default agent

default_agent sets the primary agent selected on startup and used when none is specified. It must be an existing primary or all agent that isn’t hidden. If it isn’t set, build is used.
symbiotic.json

Priority

When an agent is defined in multiple places, the definitions are merged field by field, the higher-priority source winning for each field: project Markdown files, then .symbiotic/symbiotic.json, then global Markdown files, then the project symbiotic.json, then the global symbiotic.json. See Configuration file for the full load order.