> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rerun.build/llms.txt
> Use this file to discover all available pages before exploring further.

# Configure an agent

> Its prompt, its model, and what it is allowed to do.

Open an agent by clicking it on the board. The panel on the right is where everything about it lives. Most of what this page covers is in the **Settings** and **Capabilities** tabs.

Some tabs only appear once you switch on **Expert mode** at the bottom of the panel rail. That is where **Capabilities**, **MCP**, **Memories** and **Logs** live.

## The soul

The soul is the agent system prompt. It is the single most important field: it defines who the agent is, what it owns, how it works and what it must never do.

Edit it in **Settings**, under **Soul (system prompt)**. It is markdown, so headings and lists are fine.

A soul that works usually says:

* who the agent is and what job it holds
* what it is responsible for, and what it must hand to someone else
* how it should behave: tone, level of detail, when to ask before acting
* the rules that are not negotiable

You do not have to write it yourself. An agent created from a description writes its own, and you can ask it to rewrite it later.

## Model and provider

Click the model name above the message box to change it. The picker has three sections.

<Tabs>
  <Tab title="Free">
    **Rerun** runs a hosted model paid from the model credit included in your plan. No setup, no key.
  </Tab>

  <Tab title="Subscription">
    Connect the Claude or ChatGPT plan you already pay for, and your agents use it. Sign in once from the picker.
  </Tab>

  <Tab title="API key">
    Paste your own key for Anthropic, OpenAI, Google or OpenRouter. OpenRouter also accepts a custom base URL and custom model ids, so you can point agents at your own router.
  </Tab>
</Tabs>

Each model shows a power rating and its context window, so you can trade cost against capability without knowing the model names by heart.

Picking a model from the chat changes it for that conversation only. Click **Set as default** to change it for the agent.

## Capabilities

An agent has families of tools, all switched on by default. Turn off what it has no business doing.

| Family            | What it allows                                                                 |
| ----------------- | ------------------------------------------------------------------------------ |
| `filesystem`      | Read, write, edit and search files in its own workspace                        |
| `shared`          | The same, on the folder every agent of the Box shares                          |
| `shell`           | Run shell commands in its workspace, behind a denylist of destructive commands |
| `web`             | Fetch URLs, search the web, download files                                     |
| `memory`          | Write durable facts and recall them later                                      |
| `db`              | Its own private SQLite database                                                |
| `sharedDb`        | The database shared by every agent of the Box                                  |
| `skills`          | Create and edit its own skills                                                 |
| `schedule`        | Give itself recurring or one-off tasks                                         |
| `trigger`         | Give itself public webhook URLs                                                |
| `delegate`        | Spawn throwaway sub-agents for subtasks, up to four at once                    |
| `callAgent`       | Message another agent of the Box by its handle                                 |
| `browser`         | Navigate JavaScript-heavy pages with a headless browser and take screenshots   |
| `vision`          | Analyse images in its workspace                                                |
| `notify`          | Ping you out of band without pausing                                           |
| `hub`             | Search and install connectors, and publish files to public URLs                |
| `askUser`         | Ask you a question and pause until you answer                                  |
| `requestApproval` | Ask for your approval before a consequential action                            |
| `suggestService`  | Ask you to set up a connector it needs                                         |
| `requestSecret`   | Ask you for an API key through a masked form                                   |

See [Human in the loop](/agents/human-in-the-loop) for the last four.

## Self-improvement

Separate from the capability list, and worth a deliberate decision.

| Flag               | What it allows                                                                                    |
| ------------------ | ------------------------------------------------------------------------------------------------- |
| `enabled`          | The self-improvement family as a whole                                                            |
| `allowSoulEdit`    | The agent may rewrite its own system prompt                                                       |
| `allowToolInstall` | The agent may install packages and register MCP servers                                           |
| `autoMemory`       | After each conversation, the agent reviews it and may store, update or delete a memory on its own |

All of these are on by default. An agent that must stay exactly as you wrote it needs `allowSoulEdit` and `allowToolInstall` off.

## Other settings

**Temperature** controls how much the model varies its answers. Leave it alone unless you have a reason.

**Step limit** caps how many tool-calling steps one run may take. It is the guard against an agent looping on a task it cannot finish. There is no wall-clock timeout on a run, so this is the limit that matters.

**Enabled** switches the agent off without deleting it. A switched-off agent runs nothing and refuses calls from other agents.

## Name and handle

The **name** is free text and only affects what you see. The **handle** is the key other agents use to call it with `@handle`.

Renaming an agent does not move its handle, on purpose: a handle written into another agent prompt would silently stop resolving. Change the handle only when you mean to, and update whatever references it.

## Doing it from the API

Everything on this page is reachable with [`create_agent` and `update_agent`](/api/tools/agents), which is the fastest way to version an agent setup or repeat it across workspaces.
