## Create Agent Config

**post** `/v5/agent_configs`

Create a reusable agent configuration (system prompt, harness, model, allowed tools) under the caller's account.

The config is a template that a chat session or a non-chat trigger later turns
into task params; creating one does not start any task. `persistent_workspace`
opts tasks made from this config into a durable `/workspace` that survives
sandbox death (off by default, and fixed once a task starts), and `repos`
overrides which repositories provisioning clones into that workspace — omit it
(null) to use the deployment default, or pass an empty list to clone nothing.
A `repos` override is rejected with a 422 on the model-agnostic (litellm)
harness unless `persistent_workspace` is also true, because non-persistent
litellm tasks run in a pre-cloned warm-pool sandbox where the override would be
ignored. `allowed_tools` may name MCP servers (Slack, Linear, GitHub, ...)
alongside harness tools, and granting an MCP server name authorizes every tool
it exposes.

### Body Parameters

- `harness: "claude-code" or "codex" or "litellm"`

  Harness strategy. See Harness enum for supported values.

  - `"claude-code"`

  - `"codex"`

  - `"litellm"`

- `model: string`

- `name: string`

- `system_prompt: string`

- `allowed_tools: optional array of "Read" or "Write" or "Edit" or 34 more`

  Tools enabled for this config. See AllowedTool enum for the catalogue.

  - `"Read"`

  - `"Write"`

  - `"Edit"`

  - `"Bash"`

  - `"Glob"`

  - `"Grep"`

  - `"List"`

  - `"WebFetch"`

  - `"WebSearch"`

  - `"Task"`

  - `"TodoWrite"`

  - `"NotebookEdit"`

  - `"ExitPlanMode"`

  - `"Slack"`

  - `"Linear"`

  - `"GitHub"`

  - `"Confluence"`

  - `"Notion"`

  - `"Datadog"`

  - `"PagerDuty"`

  - `"Salesforce"`

  - `"Figma"`

  - `"Granola"`

  - `"Jira"`

  - `"Gmail"`

  - `"GoogleCalendar"`

  - `"GoogleDrive"`

  - `"GoogleDocs"`

  - `"GoogleSheets"`

  - `"GoogleSlides"`

  - `"Snowflake"`

  - `"Redash"`

  - `"Tableau"`

  - `"Metabase"`

  - `"Gong"`

  - `"ZoomInfo"`

  - `"Clay"`

- `description: optional string`

- `persistent_workspace: optional boolean`

  Give tasks a persistent /workspace that survives sandbox death. Fixed for a task's life; defaults off.

- `repos: optional array of RepoSpec`

  Per-config repo override. None uses the deployment default; an empty list clones nothing.

  - `url: string`

  - `depth: optional number`

  - `path: optional string`

### Returns

- `id: string`

- `allowed_tools: array of string`

- `created_at: string`

- `harness: string`

- `model: string`

- `name: string`

- `system_prompt: string`

- `updated_at: string`

- `description: optional string`

- `object: optional "agent_config"`

  - `"agent_config"`

- `persistent_workspace: optional boolean`

- `repos: optional array of RepoSpec`

  - `url: string`

  - `depth: optional number`

  - `path: optional string`

### Example

```http
curl https://api.egp.scale.com/v5/agent_configs \
    -H 'Content-Type: application/json' \
    -H "x-api-key: $SGP_API_KEY" \
    -d '{
          "harness": "claude-code",
          "model": "x",
          "name": "x",
          "system_prompt": "x"
        }'
```

#### Response

```json
{
  "id": "id",
  "allowed_tools": [
    "string"
  ],
  "created_at": "2019-12-27T18:11:19.117Z",
  "harness": "harness",
  "model": "model",
  "name": "name",
  "system_prompt": "system_prompt",
  "updated_at": "2019-12-27T18:11:19.117Z",
  "description": "description",
  "object": "agent_config",
  "persistent_workspace": true,
  "repos": [
    {
      "url": "x",
      "depth": 1,
      "path": "path"
    }
  ]
}
```
