## Create Agent Config

`client.AgentConfigs.New(ctx, body) (*AgentConfigNewResponse, error)`

**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.

### Parameters

- `body AgentConfigNewParams`

  - `Harness param.Field[AgentConfigNewParamsHarness]`

    Harness strategy. See Harness enum for supported values.

    - `const AgentConfigNewParamsHarnessClaudeCode AgentConfigNewParamsHarness = "claude-code"`

    - `const AgentConfigNewParamsHarnessCodex AgentConfigNewParamsHarness = "codex"`

    - `const AgentConfigNewParamsHarnessLitellm AgentConfigNewParamsHarness = "litellm"`

  - `Model param.Field[string]`

  - `Name param.Field[string]`

  - `SystemPrompt param.Field[string]`

  - `AllowedTools param.Field[[]string]`

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

    - `const AgentConfigNewParamsAllowedToolRead AgentConfigNewParamsAllowedTool = "Read"`

    - `const AgentConfigNewParamsAllowedToolWrite AgentConfigNewParamsAllowedTool = "Write"`

    - `const AgentConfigNewParamsAllowedToolEdit AgentConfigNewParamsAllowedTool = "Edit"`

    - `const AgentConfigNewParamsAllowedToolBash AgentConfigNewParamsAllowedTool = "Bash"`

    - `const AgentConfigNewParamsAllowedToolGlob AgentConfigNewParamsAllowedTool = "Glob"`

    - `const AgentConfigNewParamsAllowedToolGrep AgentConfigNewParamsAllowedTool = "Grep"`

    - `const AgentConfigNewParamsAllowedToolList AgentConfigNewParamsAllowedTool = "List"`

    - `const AgentConfigNewParamsAllowedToolWebFetch AgentConfigNewParamsAllowedTool = "WebFetch"`

    - `const AgentConfigNewParamsAllowedToolWebSearch AgentConfigNewParamsAllowedTool = "WebSearch"`

    - `const AgentConfigNewParamsAllowedToolTask AgentConfigNewParamsAllowedTool = "Task"`

    - `const AgentConfigNewParamsAllowedToolTodoWrite AgentConfigNewParamsAllowedTool = "TodoWrite"`

    - `const AgentConfigNewParamsAllowedToolNotebookEdit AgentConfigNewParamsAllowedTool = "NotebookEdit"`

    - `const AgentConfigNewParamsAllowedToolExitPlanMode AgentConfigNewParamsAllowedTool = "ExitPlanMode"`

    - `const AgentConfigNewParamsAllowedToolSlack AgentConfigNewParamsAllowedTool = "Slack"`

    - `const AgentConfigNewParamsAllowedToolLinear AgentConfigNewParamsAllowedTool = "Linear"`

    - `const AgentConfigNewParamsAllowedToolGitHub AgentConfigNewParamsAllowedTool = "GitHub"`

    - `const AgentConfigNewParamsAllowedToolConfluence AgentConfigNewParamsAllowedTool = "Confluence"`

    - `const AgentConfigNewParamsAllowedToolNotion AgentConfigNewParamsAllowedTool = "Notion"`

    - `const AgentConfigNewParamsAllowedToolDatadog AgentConfigNewParamsAllowedTool = "Datadog"`

    - `const AgentConfigNewParamsAllowedToolPagerDuty AgentConfigNewParamsAllowedTool = "PagerDuty"`

    - `const AgentConfigNewParamsAllowedToolSalesforce AgentConfigNewParamsAllowedTool = "Salesforce"`

    - `const AgentConfigNewParamsAllowedToolFigma AgentConfigNewParamsAllowedTool = "Figma"`

    - `const AgentConfigNewParamsAllowedToolGranola AgentConfigNewParamsAllowedTool = "Granola"`

    - `const AgentConfigNewParamsAllowedToolJira AgentConfigNewParamsAllowedTool = "Jira"`

    - `const AgentConfigNewParamsAllowedToolGmail AgentConfigNewParamsAllowedTool = "Gmail"`

    - `const AgentConfigNewParamsAllowedToolGoogleCalendar AgentConfigNewParamsAllowedTool = "GoogleCalendar"`

    - `const AgentConfigNewParamsAllowedToolGoogleDrive AgentConfigNewParamsAllowedTool = "GoogleDrive"`

    - `const AgentConfigNewParamsAllowedToolGoogleDocs AgentConfigNewParamsAllowedTool = "GoogleDocs"`

    - `const AgentConfigNewParamsAllowedToolGoogleSheets AgentConfigNewParamsAllowedTool = "GoogleSheets"`

    - `const AgentConfigNewParamsAllowedToolGoogleSlides AgentConfigNewParamsAllowedTool = "GoogleSlides"`

    - `const AgentConfigNewParamsAllowedToolSnowflake AgentConfigNewParamsAllowedTool = "Snowflake"`

    - `const AgentConfigNewParamsAllowedToolRedash AgentConfigNewParamsAllowedTool = "Redash"`

    - `const AgentConfigNewParamsAllowedToolTableau AgentConfigNewParamsAllowedTool = "Tableau"`

    - `const AgentConfigNewParamsAllowedToolMetabase AgentConfigNewParamsAllowedTool = "Metabase"`

    - `const AgentConfigNewParamsAllowedToolGong AgentConfigNewParamsAllowedTool = "Gong"`

    - `const AgentConfigNewParamsAllowedToolZoomInfo AgentConfigNewParamsAllowedTool = "ZoomInfo"`

    - `const AgentConfigNewParamsAllowedToolClay AgentConfigNewParamsAllowedTool = "Clay"`

  - `Description param.Field[string]`

  - `PersistentWorkspace param.Field[bool]`

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

  - `Repos param.Field[[]RepoSpec]`

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

    - `URL string`

    - `Depth int64`

    - `Path string`

### Returns

- `type AgentConfigNewResponse struct{…}`

  - `ID string`

  - `AllowedTools []string`

  - `CreatedAt Time`

  - `Harness string`

  - `Model string`

  - `Name string`

  - `SystemPrompt string`

  - `UpdatedAt Time`

  - `Description string`

  - `Object AgentConfigNewResponseObject`

    - `const AgentConfigNewResponseObjectAgentConfig AgentConfigNewResponseObject = "agent_config"`

  - `PersistentWorkspace bool`

  - `Repos []RepoSpec`

    - `URL string`

    - `Depth int64`

    - `Path string`

### Example

```go
package main

import (
  "context"
  "fmt"

  "github.com/scaleapi/sgp-dev-go"
  "github.com/scaleapi/sgp-dev-go/option"
)

func main() {
  client := sgpdev.NewClient(
    option.WithAPIKey("My API Key"),
    option.WithAccountID("My Account ID"),
  )
  agentConfig, err := client.AgentConfigs.New(context.TODO(), sgpdev.AgentConfigNewParams{
    Harness: sgpdev.AgentConfigNewParamsHarnessClaudeCode,
    Model: "x",
    Name: "x",
    SystemPrompt: "x",
  })
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", agentConfig.ID)
}
```

#### 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"
    }
  ]
}
```
