<!-- Source: https://docs.squirro.com/en/latest/technical/neo/admin-guide/agent-config/preference-reference.html -->
# Preference Reference

> **Warning**
>
> Project Neo is currently in [Technical Preview](../../../../a-z/squirro-glossary.md#term-Technical-Preview). Features described in this section may change before general availability.

Behavior is shaped through a flat set of settings addressed by dotted paths, grouped into four namespaces: `inference`, `capability`, `source`, and `trait`. Four layers contribute values on these paths. The project and each agent contribute through `prefers`, and they also restrict what the layers above them may contribute through `constrains` and `pins`. A user and an individual request contribute preferences only. This page is the complete catalog of preference paths, with the type, allowed values, and default for each.

With the one exception noted below, every path listed here is a preference: a value that a user or a request can contribute, subject to the constraints and pins set by the project and the selected agent. Behavior that a request must never influence is policy, not a preference, and lives on a resource body instead. For those fields, such as the project context budget, see the [Resource Reference](resource-reference.md#neo-agent-config-resource-reference) page. For how a value is resolved across the request, user, agent, and project layers, see the [Overview](overview.md#neo-agent-config-overview) page. For the authoring primitives and the decision rule between `prefers`, `constrains`, and `pins`, see the [Authoring Agents](authoring-agents.md#neo-agent-config-authoring) page.

## Tri-State Toggles

The capability and source switches accept three values rather than a plain boolean:

- **true**

  The capability is on. The value is taken as written and never re-derived, so turning on a capability backed by a resource kind you have not published gives the agent the capability with nothing to reach.
- **false**

  The capability is off. Again the value is taken as written, so a capability set to `false` stays off even when the resources that would back it are present. This is the difference from `auto`: only `auto` is derived.
- **auto**

  The default. The platform derives the effective value. For a switch backed by a resource kind, such as `capability.mcp.enabled` or `source.knowledge_graph.enabled`, `auto` turns the capability on when your configuration publishes at least one resource of that kind, and off otherwise. For a switch that is not backed by a resource, `auto` turns the capability on.

## Inference Settings

| Path | Type | Default | Description |
| --- | --- | --- | --- |
| `inference.model` | Model id | none | The model used to generate responses. The value is the `metadata.id` of a `Model` resource. It has no built-in default, so every project must set it in `prefers` or `pins`. A project that does not fails both `genai lint` and the deploy. |
| `inference.reasoning_effort` | `disabled` / `low` / `medium` / `high` | unset | How much reasoning depth to trade for latency. When unset, the provider default applies. `disabled` suppresses reasoning on a reasoning-capable model, and `low`, `medium`, and `high` step the effort up. Effort applies only to a model whose catalog entry sets `enable_reasoning: true`. |

## Capability Settings

| Path | Type | Default | Description |
| --- | --- | --- | --- |
| `capability.code_interpreter.enabled` | `true` / `false` / `auto` | `auto` | Allow the agent to run code in a sandbox. Backed by the `CodeInterpreter` resource. |
| `capability.mcp.enabled` | `true` / `false` / `auto` | `auto` | Allow the agent to use tools from external MCP servers. Backed by the `MCP` resource. |
| `capability.subagents.enabled` | `true` / `false` / `auto` | `auto` | Allow the agent to delegate to other agents. |
| `capability.filesystem.enabled` | `true` / `false` / `auto` | `auto` | Allow the agent to read from the sandbox filesystem. |
| `capability.tasks.enabled` | `true` / `false` / `auto` | `true` | Allow the agent to create and manage scheduled tasks on behalf of the user. The platform controls this path, so writing it in `prefers` or `pins` fails the deploy. See the note below. |
| `capability.studio_mcp.enabled` | `true` / `false` / `auto` | `auto` | Allow the agent to use tools exposed by Squirro Studio plugins. Unlike the MCP switch, this reaches a cluster-internal channel rather than a resource you publish, which is why `auto` is on. Setting `false` withdraws every Studio plugin tool at once, so it is an operator-level switch rather than a way to pick among servers. |

> **Note**
>
> `capability.tasks.enabled` is the one path in this table you cannot author. It is on for every project, and it is listed here because it governs whether users can create scheduled tasks by asking an agent. Every other path in the table is set through `prefers`, `constrains`, or `pins` in the usual way.

## Source Settings

| Path | Type | Default | Description |
| --- | --- | --- | --- |
| `source.documents.enabled` | `true` / `false` / `auto` | `auto` | Use document retrieval for the conversation. |
| `source.documents.limit` | integer, 1 to 200 | `20` | Maximum number of documents to retrieve. |
| `source.documents.filter` | string | `""` | Search filter expression applied to retrieval. |
| `source.knowledge_graph.enabled` | `true` / `false` / `auto` | `auto` | Use knowledge graph retrieval for the conversation. Backed by the `KnowledgeGraph` resource. |
| `source.knowledge_graph.default` | KnowledgeGraph id | unset | The knowledge graph the agent queries when a call does not name one. When unset, the agent picks a graph explicitly on each call. |

## Trait Settings

The `trait` namespace is parametric: it has one path per `TraitDimension` your configuration declares.

| Path | Type | Default | Description |
| --- | --- | --- | --- |
| `trait.<dimension>` | trait id | unset | The active trait for the dimension named `<dimension>`, whose value is the id of one trait within that dimension. When unset, the dimension contributes no prompt fragment. |

For example, a `TraitDimension` with `metadata.id: style` is addressed as `trait.style`, and setting `trait.style: concise` activates the `concise` trait. For the authoring workflow, see the [Authoring Agents](authoring-agents.md#neo-agent-config-authoring) page.
