## Update Agent Config

`client.AgentConfigs.Update(ctx, agentConfigID, params) (*AgentConfigUpdateResponse, error)`

**patch** `/v5/agent_configs/{agent_config_id}`

Partially update a stored agent config; only fields present in the request body are changed.

`persistent_workspace` and `repos` are both patchable — an explicit null on
`repos` clears the override back to the deployment default, while the
always-present fields (name, system_prompt, harness, allowed_tools, model, and
persistent_workspace) reject an explicit null. Because `persistent_workspace`
and `repos` are read when a task is created and are fixed for a task's life,
changing them affects only tasks created afterward, not one already running. The
optional `task_id` query parameter opts into a live-config side effect: after
the row is persisted, the changed pass-through fields (system_prompt, model,
harness, and allowed_tools split into harness tools versus MCP servers) are
shallow-merged into that running task's params on Agentex in a background task so
the worker picks them up on its next turn; `persistent_workspace` and `repos`
are intentionally not forwarded to a running task. That side effect runs after
the response is sent, is best-effort, and no-ops if the task does not exist or the
caller does not own it. A user caller can only update a config they created unless
fine-grained access control grants access.

### Parameters

- `agentConfigID string`

- `params AgentConfigUpdateParams`

  - `TaskID param.Field[string]`

    Query param: If set, after persisting the patch we shallow-merge the changed fields into this task's params column on Agentex so the worker picks up the new values on its next turn. Caller-provided context — Agentex enforces task ownership via its own auth, so the side-effect no-ops if the caller doesn't own the task.

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

    Body param

    - `const AgentConfigUpdateParamsAllowedToolRead AgentConfigUpdateParamsAllowedTool = "Read"`

    - `const AgentConfigUpdateParamsAllowedToolWrite AgentConfigUpdateParamsAllowedTool = "Write"`

    - `const AgentConfigUpdateParamsAllowedToolEdit AgentConfigUpdateParamsAllowedTool = "Edit"`

    - `const AgentConfigUpdateParamsAllowedToolBash AgentConfigUpdateParamsAllowedTool = "Bash"`

    - `const AgentConfigUpdateParamsAllowedToolGlob AgentConfigUpdateParamsAllowedTool = "Glob"`

    - `const AgentConfigUpdateParamsAllowedToolGrep AgentConfigUpdateParamsAllowedTool = "Grep"`

    - `const AgentConfigUpdateParamsAllowedToolList AgentConfigUpdateParamsAllowedTool = "List"`

    - `const AgentConfigUpdateParamsAllowedToolWebFetch AgentConfigUpdateParamsAllowedTool = "WebFetch"`

    - `const AgentConfigUpdateParamsAllowedToolWebSearch AgentConfigUpdateParamsAllowedTool = "WebSearch"`

    - `const AgentConfigUpdateParamsAllowedToolTask AgentConfigUpdateParamsAllowedTool = "Task"`

    - `const AgentConfigUpdateParamsAllowedToolTodoWrite AgentConfigUpdateParamsAllowedTool = "TodoWrite"`

    - `const AgentConfigUpdateParamsAllowedToolNotebookEdit AgentConfigUpdateParamsAllowedTool = "NotebookEdit"`

    - `const AgentConfigUpdateParamsAllowedToolExitPlanMode AgentConfigUpdateParamsAllowedTool = "ExitPlanMode"`

    - `const AgentConfigUpdateParamsAllowedToolSlack AgentConfigUpdateParamsAllowedTool = "Slack"`

    - `const AgentConfigUpdateParamsAllowedToolLinear AgentConfigUpdateParamsAllowedTool = "Linear"`

    - `const AgentConfigUpdateParamsAllowedToolGitHub AgentConfigUpdateParamsAllowedTool = "GitHub"`

    - `const AgentConfigUpdateParamsAllowedToolConfluence AgentConfigUpdateParamsAllowedTool = "Confluence"`

    - `const AgentConfigUpdateParamsAllowedToolNotion AgentConfigUpdateParamsAllowedTool = "Notion"`

    - `const AgentConfigUpdateParamsAllowedToolDatadog AgentConfigUpdateParamsAllowedTool = "Datadog"`

    - `const AgentConfigUpdateParamsAllowedToolPagerDuty AgentConfigUpdateParamsAllowedTool = "PagerDuty"`

    - `const AgentConfigUpdateParamsAllowedToolSalesforce AgentConfigUpdateParamsAllowedTool = "Salesforce"`

    - `const AgentConfigUpdateParamsAllowedToolFigma AgentConfigUpdateParamsAllowedTool = "Figma"`

    - `const AgentConfigUpdateParamsAllowedToolGranola AgentConfigUpdateParamsAllowedTool = "Granola"`

    - `const AgentConfigUpdateParamsAllowedToolJira AgentConfigUpdateParamsAllowedTool = "Jira"`

    - `const AgentConfigUpdateParamsAllowedToolGmail AgentConfigUpdateParamsAllowedTool = "Gmail"`

    - `const AgentConfigUpdateParamsAllowedToolGoogleCalendar AgentConfigUpdateParamsAllowedTool = "GoogleCalendar"`

    - `const AgentConfigUpdateParamsAllowedToolGoogleDrive AgentConfigUpdateParamsAllowedTool = "GoogleDrive"`

    - `const AgentConfigUpdateParamsAllowedToolGoogleDocs AgentConfigUpdateParamsAllowedTool = "GoogleDocs"`

    - `const AgentConfigUpdateParamsAllowedToolGoogleSheets AgentConfigUpdateParamsAllowedTool = "GoogleSheets"`

    - `const AgentConfigUpdateParamsAllowedToolGoogleSlides AgentConfigUpdateParamsAllowedTool = "GoogleSlides"`

    - `const AgentConfigUpdateParamsAllowedToolSnowflake AgentConfigUpdateParamsAllowedTool = "Snowflake"`

    - `const AgentConfigUpdateParamsAllowedToolRedash AgentConfigUpdateParamsAllowedTool = "Redash"`

    - `const AgentConfigUpdateParamsAllowedToolTableau AgentConfigUpdateParamsAllowedTool = "Tableau"`

    - `const AgentConfigUpdateParamsAllowedToolMetabase AgentConfigUpdateParamsAllowedTool = "Metabase"`

    - `const AgentConfigUpdateParamsAllowedToolGong AgentConfigUpdateParamsAllowedTool = "Gong"`

    - `const AgentConfigUpdateParamsAllowedToolZoomInfo AgentConfigUpdateParamsAllowedTool = "ZoomInfo"`

    - `const AgentConfigUpdateParamsAllowedToolClay AgentConfigUpdateParamsAllowedTool = "Clay"`

  - `Description param.Field[string]`

    Body param

  - `Harness param.Field[AgentConfigUpdateParamsHarness]`

    Body param: Supported agent harness strategies.

    Mirrors `PROVIDERS` in golden-agent's `project/harness/activity.py`.

    - `const AgentConfigUpdateParamsHarnessClaudeCode AgentConfigUpdateParamsHarness = "claude-code"`

    - `const AgentConfigUpdateParamsHarnessCodex AgentConfigUpdateParamsHarness = "codex"`

    - `const AgentConfigUpdateParamsHarnessLitellm AgentConfigUpdateParamsHarness = "litellm"`

  - `Model param.Field[string]`

    Body param

  - `Name param.Field[string]`

    Body param

  - `PersistentWorkspace param.Field[bool]`

    Body param

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

    Body param

    - `URL string`

    - `Depth int64`

    - `Path string`

  - `SystemPrompt param.Field[string]`

    Body param

### Returns

- `type AgentConfigUpdateResponse struct{…}`

  - `ID string`

  - `AllowedTools []string`

  - `CreatedAt Time`

  - `Harness string`

  - `Model string`

  - `Name string`

  - `SystemPrompt string`

  - `UpdatedAt Time`

  - `Description string`

  - `Object AgentConfigUpdateResponseObject`

    - `const AgentConfigUpdateResponseObjectAgentConfig AgentConfigUpdateResponseObject = "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.Update(
    context.TODO(),
    "agent_config_id",
    sgpdev.AgentConfigUpdateParams{

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