Customize

Custom agents

Create agents with their own prompt, model and permissions, or change how the built-in agents behave.

An agent is a named setup for Hull: a system prompt, an optional model, and the tools it's allowed to use. Hull comes with built-in agents, and you can add your own, such as a docs writer that only edits Markdown or a reviewer that can't change files.

Older versions of Hull called these modes. They're now agents. Hull still loads your old mode files: see Migrate legacy modes.

Built-in agents

AgentTypeWhat it does
codePrimaryThe default. Reads, writes and runs commands, within your permissions.
planPrimaryPlans work. It can only edit plan files.
askPrimaryAnswers questions without changing your code.
debugPrimaryDiagnoses and fixes problems step by step.
generalSubagentHandles multi-step research and tasks in parallel.
exploreSubagentSearches the codebase quickly. Read-only.

Primary agents are the ones you pick and talk to. Subagents are started by other agents for a focused piece of work. See Subagents.

Switch primary agents with Tab in the CLI, Cmd+. / Ctrl+. in VS Code, or the agent picker. Set default_agent in hull.json to start with a different agent.

Create an agent

Ask Hull

The quickest way is to describe the agent you want:

Create an agent called docs-writer that can read anything but only edit Markdown files.

In the CLI, hull agent create walks you through the same thing and writes the file for you.

Write a Markdown file

Create a .md file in an agents folder. The file name becomes the agent's name, the frontmatter sets its options, and the body is its prompt:

ScopeFolder
Project.hull/agents/
Global~/.config/hull/agents/

Hull also reads agent/ as well as agents/, and the legacy .hullcode/ folders.

.hull/agents/docs-writer.md:

---
description: Writes and edits technical documentation
mode: primary
color: "#10B981"
permission:
  edit:
    "*": deny
    "*.md": allow
  bash: deny
---

You are a technical writer. Write clear, well-structured documentation
with short examples. Only edit Markdown files.

Or use config

Define the same agent under agent in hull.json:

{
  "agent": {
    "docs-writer": {
      "description": "Writes and edits technical documentation",
      "mode": "primary",
      "prompt": "You are a technical writer...",
      "permission": {
        "edit": { "*": "deny", "*.md": "allow" },
        "bash": "deny"
      }
    }
  }
}

To keep a long prompt in its own file, use "prompt": "{file:./prompts/docs-writer.md}".

In VS Code you can also create and edit agents in Settings > Agent Behaviour > Agents, and import or export agent definitions there.

Options

OptionDescription
descriptionWhat the agent is for. Shown in the picker, and used by other agents to decide when to start a subagent.
modeprimary (you pick it), subagent (other agents start it) or all (both). Custom agents default to all.
promptThe system prompt. In a Markdown file, the body is the prompt.
modelA model as provider/model. Without it, the agent uses the model you've selected.
variantDefault model variant, such as a reasoning effort, when the agent uses its own model.
permissionWhich tools the agent can use. See Permissions.
stepsThe most tool-calling rounds the agent can take before it has to answer.
temperature, top_pSampling settings for the model.
colorHex color (#FF5733) or a theme color such as primary or accent.
hiddenFor subagents: hide it from the @ menu. Other agents can still use it.
disabletrue removes the agent.

Other options are passed to the model provider, so you can set provider-specific parameters.

Change a built-in agent

Use a built-in agent's name to change only the parts you specify. Everything else stays the same:

{
  "agent": {
    "code": {
      "steps": 50,
      "permission": { "bash": { "*": "ask", "npm test *": "allow" } }
    },
    "general": { "disable": true }
  }
}

Where agents come from

Hull merges agent settings from built-in defaults, your global config, the project's config and agent Markdown files. When the same agent is defined in several places, the settings are merged field by field, so you can override a single option.

If you belong to a Hull organization, your admins can also provide agents. They appear in your agent list next to your own, can't be removed locally, and take priority over a built-in agent with the same name. To change one, ask whoever manages Hull for your organization.

Project agents load only after you trust the project. To check what an agent ends up with, run hull debug agent <name>, or hull agent list to see all agents.

Migrate legacy modes

Hull converts custom modes from older versions into agents when it starts. It reads them from:

  • .hullcodemodes in the project
  • ~/.hullcodemodes
  • custom_modes.yaml in the old extension's settings folder

Each mode becomes a primary agent: its role definition and custom instructions become the prompt, and its tool groups (read, edit, command, browser, mcp) become permission rules. Groups a mode didn't have are denied. Modes named after built-in agents (code, architect, ask, debug) are skipped, and the retired Orchestrator mode is not migrated: use subagents instead.

To edit a migrated mode, create an agent file with the same name in .hull/agents/.

On this page