Agent Profiles

One system prompt cannot be ideal for every task. Agent Profiles package a model, system prompt, theme, avatar, allowed tools, allowed skills and workflow actions into a named assistant.

Built-in profiles

Profile Purpose
chat General-purpose assistant
planner Decomposes a goal and writes PLAN.md
coder Implements an approved plan with the tools allowed in the selected Project

Bundled profiles are read-only until a user saves their own copy of the same name, at which point the user's version takes precedence.

Where profiles live

Profiles are resolved from three roots, lowest precedence first:

A profile is a folder:

profiles/support-assistant/
    config.json
    SYSTEM.md
    avatar.png

config.json

{
  "theme": "nord",
  "model": "GLM-5.2",
  "onlyTools": ["api_tools"],
  "onlySkills": ["incident-response"]
}
Key Purpose
model Default model this profile runs on
theme UI theme applied while the profile is active
onlyTools Restrict the profile to these tools/groups. null allows all
onlySkills Restrict the profile to these skills. null allows all

Composing a system prompt

The simplest profile has a SYSTEM.md used verbatim. For anything organizational, a SYSTEM.template composes the prompt from sibling Markdown files with {VAR} substitutions:

profiles/policy-analyst/
    SYSTEM.template
    POLICY.md
    PROCEDURES.md
    DOMAIN.md
    memory/
        2026-08-01.md
        2026-08-12.md
You are a policy analyst for Acme Corp.

## Organizational policy
{POLICY}

## Standard procedures
{PROCEDURES}

## Domain knowledge
{DOMAIN}

## Recent context
{MEMORY_LATEST}

Each {VAR} resolves to the contents of the sibling VAR.md. {MEMORY_LATEST} resolves to the newest file in memory/, giving a profile a rolling working memory without rewriting the prompt.

If no SYSTEM.template exists, SYSTEM.md is returned as-is.

Actions

A profile can declare workflow actions the UI offers, optionally conditional on the user's workspace. Only file conditions are evaluated - a glob match within the user's allowed directories - and unconditional actions always show:

{
  "actions": [
    { "label": "Implement PLAN.md", "prompt": "Implement the approved plan in PLAN.md",
      "condition": { "file": "PLAN.md" } },
    { "label": "Summarize this project", "prompt": "Summarize what this project does" }
  ]
}

This is what drives the built-in Planner → Coder handoff: the Planner writes PLAN.md, and the Coder profile's action only appears once that file exists in the active Project.

The Profile Manager

The Chat UI can inspect built-in profiles, override their default model and theme, and create new profiles entirely from the browser - editing prompt files, uploading an avatar and choosing which tools and skills a profile may use.

Profiles created in the UI are written to the signed-in user's own profiles/ folder, so a user can never modify a shared profile by accident. To publish a profile to everyone, put it in App_Data/chat/user/default/profiles/.

API

Profile routes live under the agents extension:

Profiles as governed job descriptions

For an organization, profiles become the unit of AI governance - Support Assistant, Policy Analyst, Release Planner, Sales Researcher, Finance Reviewer - each with only the context and capabilities its role needs:

{
  "model": "Claude Sonnet 5",
  "onlyTools": ["api_tools"],
  "onlySkills": ["refund-policy", "escalation-matrix"]
}

Combined with API Tools, a profile restricted to api_tools can operate your business systems and nothing else - no filesystem, no code execution, no web access - whilst still running as the signed-in user with their existing permissions.

  • Skills - reusable procedures a profile can be restricted to
  • Projects - the directory boundary a profile's tools operate in
  • Tools - the registry onlyTools selects from
  • Themes - the themes theme selects from, and how to add your own