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

# Managed agent and Signal mutations

> Run managed agent sandboxes and automations, and configure Signal per project. Arguments, return types and a validated example for each of the 25 mutations.

Run managed agent sandboxes and automations, and configure Signal per project.

For task-oriented walkthroughs of these operations, see the [Managed agent and Signal guide](/docs/ax/graphql-reference/guides/managed-agents-and-signal). Every mutation below is sent as a `POST` to `https://app.arize.com/graphql` with an `x-api-key` header; see [Forming calls](/docs/ax/graphql-reference/overview/how-to-use-graphql/forming-calls).

## Mutations in this page

* [`createSandboxIntegration`](#createsandboxintegration): Create sandbox integration.
* [`updateSandboxIntegration`](#updatesandboxintegration): Update sandbox integration.
* [`deleteSandboxIntegration`](#deletesandboxintegration): Delete sandbox integration.
* [`createSandboxConfig`](#createsandboxconfig): Create sandbox config.
* [`updateSandboxConfig`](#updatesandboxconfig): Update sandbox config.
* [`deleteSandboxConfig`](#deletesandboxconfig): Delete sandbox config.
* [`addIntegrationToSandboxConfig`](#addintegrationtosandboxconfig): Add integration to sandbox config.
* [`createSandboxJob`](#createsandboxjob): Create a new managed agent sandbox job
* [`createSandboxTemplate`](#createsandboxtemplate): Snapshot a sandbox and save it as a reusable template for future jobs
* [`sendSandboxMessage`](#sendsandboxmessage): Send a follow-up message to a running sandbox agent
* [`createAutomation`](#createautomation): Create a new managed agent automation.
* [`updateAutomation`](#updateautomation): Replace an existing automation's trigger (cron cadence or metric config) in full and set or clear its per-automation agent-runtime override, in a single save.
* [`deleteAutomation`](#deleteautomation): Soft-delete a managed agent automation.
* [`setAutomationEnabled`](#setautomationenabled): Pause or resume a managed agent automation.
* [`setAutomationRepo`](#setautomationrepo): Set or clear an automation's repo binding — the repo its spawned jobs and 'Open PR' / 'Open GitHub issue' actions target.
* [`triggerAutomationNow`](#triggerautomationnow): Spawn a job for an automation immediately, bypassing next\_fire\_at.
* [`setSignalEnabled`](#setsignalenabled): Enable or disable the Signal automation for a project.
* [`setSignalEnabledBulk`](#setsignalenabledbulk): Enable or disable the Signal automation for multiple projects in one call.
* [`updateSignalConfig`](#updatesignalconfig): Update a project's Signal config: the run cadence and the free-form additional context injected into the Signal prompt.
* [`setSignalAgentConfig`](#setsignalagentconfig): Attach a custom agent config (sandbox config) to a project's Signal automation, repointing it away from the shared built-in default.
* [`resetSignalAgentConfig`](#resetsignalagentconfig): Revert a project's Signal automation back to the shared built-in agent config, detaching any custom config (the custom config itself is left intact).
* [`setSignalIssueStatus`](#setsignalissuestatus): Set the lifecycle status of a Signal issue — Resolve, Ignore, or re-open it.
* [`openSignalIssuePR`](#opensignalissuepr): Launch a managed agent sandbox job that fixes a Signal issue and opens a PR, borrowing the project's Signal automation repo/agent config.
* [`openSignalIssueGitHubIssue`](#opensignalissuegithubissue): File a GitHub issue for a Signal issue, using the project's Signal repo and its connected GitHub token.
* [`deleteSignal`](#deletesignal): Delete the Signal automation for a project.

## Reference

### createSandboxIntegration

`createSandboxIntegration(input: CreateSandboxIntegrationInput!): CreateSandboxIntegrationPayload`

#### Arguments

**input** `CreateSandboxIntegrationInput!` *required*

**CreateSandboxIntegrationInput fields**

**accountId** `ID!` *required*

The global relay ID of the account

**spaceId** `ID`

Optional Relay ID of the space the caller is acting from. When provided, authorizes via Space Member+ (MANAGED\_AGENT\_\*) in that space; account/org admins may omit it. The integration row stays account-scoped.

**provider** `String!` *required*

Provider key (e.g., 'github', 'dynatrace')

**name** `String!` *required*

Human-readable name for the integration

**env** `[SandboxIntegrationSecretInput!]!` *required*

Env var entries to store on the integration. Each entry is \{envVar, value} — the env var is what gets injected into sandbox pods. Empty array is allowed for custom provider integrations.

**SandboxIntegrationSecretInput fields**

**envVar** `String!` *required*

Environment variable name to inject into the sandbox (e.g. 'DT\_API\_TOKEN').

**value** `String!` *required*

Plaintext secret value — encrypted at rest.

**installer** `String`

For custom provider: install mechanism. Currently only 'github' (git clone) is supported.

**installSource** `String`

For custom provider: source to install from (e.g., GitHub repository URL).

**description** `String`

For custom provider: description of how Claude should use the skill.

**clientMutationId** `String`

#### Returns

**sandboxIntegration** `SandboxIntegration!`

The created sandbox integration

**SandboxIntegration fields**

Scalar fields: `id`, `name`, `provider`, `hasApiKey`, `createdAt`, `updatedAt`, `installer`, `installSource`, `description`.

Object fields (select subfields): `creator`.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation CreateSandboxIntegration($input: CreateSandboxIntegrationInput!) {
  createSandboxIntegration(input: $input) {
    sandboxIntegration { id name }
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "accountId": "<ID>",
    "provider": "<string>",
    "name": "<string>",
    "env": [
      {
        "envVar": "<string>",
        "value": "<string>"
      }
    ]
  }
}
```

### updateSandboxIntegration

`updateSandboxIntegration(input: UpdateSandboxIntegrationInput!): UpdateSandboxIntegrationPayload`

#### Arguments

**input** `UpdateSandboxIntegrationInput!` *required*

**UpdateSandboxIntegrationInput fields**

**spaceId** `ID`

Optional Relay ID of the space the caller is acting from. When provided, authorizes via Space Member+ (MANAGED\_AGENT\_\*) in that space; account/org admins may omit it. The integration row stays account-scoped.

**sandboxIntegrationId** `ID!` *required*

The global relay ID of the sandbox integration to update

**name** `String`

New name (omit to keep current)

**provider** `String`

New provider (omit to keep current)

**env** `[SandboxIntegrationSecretInput!]`

Replace the row's env entries with these (omit to keep current).

**SandboxIntegrationSecretInput fields**

**envVar** `String!` *required*

Environment variable name to inject into the sandbox (e.g. 'DT\_API\_TOKEN').

**value** `String!` *required*

Plaintext secret value — encrypted at rest.

**installer** `String`

For custom provider: install mechanism (omit to keep current).

**installSource** `String`

For custom provider: source to install from (omit to keep current).

**description** `String`

For custom provider: description of how Claude should use the skill (omit to keep current).

**clientMutationId** `String`

#### Returns

**sandboxIntegration** `SandboxIntegration!`

The updated sandbox integration

**SandboxIntegration fields**

Scalar fields: `id`, `name`, `provider`, `hasApiKey`, `createdAt`, `updatedAt`, `installer`, `installSource`, `description`.

Object fields (select subfields): `creator`.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation UpdateSandboxIntegration($input: UpdateSandboxIntegrationInput!) {
  updateSandboxIntegration(input: $input) {
    sandboxIntegration { id name }
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "sandboxIntegrationId": "<ID>"
  }
}
```

### deleteSandboxIntegration

`deleteSandboxIntegration(input: DeleteSandboxIntegrationInput!): DeleteSandboxIntegrationPayload`

#### Arguments

**input** `DeleteSandboxIntegrationInput!` *required*

**DeleteSandboxIntegrationInput fields**

**spaceId** `ID`

Optional Relay ID of the space the caller is acting from. When provided, authorizes via Space Member+ (MANAGED\_AGENT\_\*) in that space; account/org admins may omit it. The integration row stays account-scoped.

**sandboxIntegrationId** `ID!` *required*

The global relay ID of the sandbox integration to delete

**clientMutationId** `String`

#### Returns

**success** `Boolean!`

Whether the integration was successfully soft-deleted

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation DeleteSandboxIntegration($input: DeleteSandboxIntegrationInput!) {
  deleteSandboxIntegration(input: $input) {
    success
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "sandboxIntegrationId": "<ID>"
  }
}
```

### createSandboxConfig

`createSandboxConfig(input: CreateSandboxConfigInput!): CreateSandboxConfigPayload`

#### Arguments

**input** `CreateSandboxConfigInput!` *required*

**CreateSandboxConfigInput fields**

**accountId** `ID!` *required*

The global relay ID of the account

**spaceId** `ID`

Optional Relay ID of the space the caller is acting from. When provided, authorizes via Space Member+ (MANAGED\_AGENT\_\*) in that space; account/org admins may omit it. The config row stays account-scoped.

**name** `String!` *required*

Human-readable name for the config

**repo** `String`

Repository URL or path (defaults to empty string)

**sandboxTemplateId** `Int`

Optional DB ID of the sandbox template to link

**sandboxIntegrationIds** `[ID!]`

Optional list of global relay IDs of sandbox integrations to link

**llmIntegrationId** `ID`

Optional global relay ID of an LLM integration on this account (default model gateway for an Arize-hosted sandbox). Must be null when providerId points at a claude\_managed sandbox provider — the LLM credential lives on the sandbox provider in that case.

**harness** `Harness`

Agent runtime for this config. Omit for Claude Code. One of: `claude_code`, `codex`, `cursor`, `opencode`.

**providerId** `ID`

Optional global relay ID of the sandbox provider this config dispatches to (e.g., a claude\_managed provider). Omit/null for the default Arize-hosted sandbox.

**claudeAgentId** `String`

Optional Claude managed agent id. Required when providerId points at a claude\_managed provider.

**claudeEnvironmentId** `String`

Optional Claude managed environment id. Required when providerId points at a claude\_managed provider.

**clientMutationId** `String`

#### Returns

**sandboxConfig** `SandboxConfig!`

The created sandbox config

**SandboxConfig fields**

Scalar fields: `id`, `name`, `repo`, `isBuiltin`, `sandboxTemplateCreatedAt`, `harness`, `claudeAgentId`, `claudeEnvironmentId`, `createdAt`, `updatedAt`.

Object fields (select subfields): `activeSandboxTemplate`, `templates`, `llmIntegration`, `sandboxProvider`, `creator`, `sandboxIntegrations`.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation CreateSandboxConfig($input: CreateSandboxConfigInput!) {
  createSandboxConfig(input: $input) {
    sandboxConfig { id name }
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "accountId": "<ID>",
    "name": "<string>"
  }
}
```

### updateSandboxConfig

`updateSandboxConfig(input: UpdateSandboxConfigInput!): UpdateSandboxConfigPayload`

#### Arguments

**input** `UpdateSandboxConfigInput!` *required*

**UpdateSandboxConfigInput fields**

**spaceId** `ID`

Optional Relay ID of the space the caller is acting from. When provided, authorizes via Space Member+ (MANAGED\_AGENT\_\*) in that space; account/org admins may omit it. The config row stays account-scoped.

**sandboxConfigId** `ID!` *required*

The global relay ID of the sandbox config to update

**name** `String`

New name (omit to keep current)

**repo** `String`

New repo URL/path (omit to keep current)

**sandboxTemplateId** `Int`

New sandbox template DB ID (omit to keep current, pass null to unlink)

**sandboxIntegrationIds** `[ID!]`

Replace the full set of linked integrations (omit to keep current)

**llmIntegrationId** `ID`

LLM integration relay ID for an Arize-hosted sandbox (omit to keep; pass null to unlink). Must be null when providerId resolves to a claude\_managed sandbox provider.

**harness** `Harness`

Agent runtime (omit to keep current). One of: `claude_code`, `codex`, `cursor`, `opencode`.

**providerId** `ID`

Sandbox provider relay ID (omit to keep; pass null to fall back to the default Arize-hosted sandbox).

**claudeAgentId** `String`

Claude managed agent id (omit to keep; pass null to clear).

**claudeEnvironmentId** `String`

Claude managed environment id (omit to keep; pass null to clear).

**clientMutationId** `String`

#### Returns

**sandboxConfig** `SandboxConfig!`

The updated sandbox config

**SandboxConfig fields**

Scalar fields: `id`, `name`, `repo`, `isBuiltin`, `sandboxTemplateCreatedAt`, `harness`, `claudeAgentId`, `claudeEnvironmentId`, `createdAt`, `updatedAt`.

Object fields (select subfields): `activeSandboxTemplate`, `templates`, `llmIntegration`, `sandboxProvider`, `creator`, `sandboxIntegrations`.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation UpdateSandboxConfig($input: UpdateSandboxConfigInput!) {
  updateSandboxConfig(input: $input) {
    sandboxConfig { id name }
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "sandboxConfigId": "<ID>"
  }
}
```

### deleteSandboxConfig

`deleteSandboxConfig(input: DeleteSandboxConfigInput!): DeleteSandboxConfigPayload`

#### Arguments

**input** `DeleteSandboxConfigInput!` *required*

**DeleteSandboxConfigInput fields**

**spaceId** `ID`

Optional Relay ID of the space the caller is acting from. When provided, authorizes via Space Member+ (MANAGED\_AGENT\_\*) in that space; account/org admins may omit it. The config rows stay account-scoped.

**sandboxConfigIds** `[ID!]!` *required*

The global relay IDs of the sandbox configs to delete. Must contain at least one id.

**clientMutationId** `String`

#### Returns

**deletedCount** `Int!`

How many configs were actually soft-deleted. May be less than the requested count if some ids did not exist, belonged to another account, or were already deleted.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation DeleteSandboxConfig($input: DeleteSandboxConfigInput!) {
  deleteSandboxConfig(input: $input) {
    deletedCount
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "sandboxConfigIds": [
      "<ID>"
    ]
  }
}
```

### addIntegrationToSandboxConfig

`addIntegrationToSandboxConfig(input: AddIntegrationToSandboxConfigInput!): AddIntegrationToSandboxConfigPayload`

#### Arguments

**input** `AddIntegrationToSandboxConfigInput!` *required*

**AddIntegrationToSandboxConfigInput fields**

**spaceId** `ID`

Optional Relay ID of the space the caller is acting from. When provided, authorizes via Space Member+ (MANAGED\_AGENT\_\*) in that space; account/org admins may omit it. The config row stays account-scoped.

**sandboxConfigId** `ID!` *required*

The global relay ID of the sandbox config

**sandboxIntegrationId** `ID!` *required*

The global relay ID of the sandbox integration to link

**clientMutationId** `String`

#### Returns

**sandboxConfig** `SandboxConfig!`

The updated sandbox config

**SandboxConfig fields**

Scalar fields: `id`, `name`, `repo`, `isBuiltin`, `sandboxTemplateCreatedAt`, `harness`, `claudeAgentId`, `claudeEnvironmentId`, `createdAt`, `updatedAt`.

Object fields (select subfields): `activeSandboxTemplate`, `templates`, `llmIntegration`, `sandboxProvider`, `creator`, `sandboxIntegrations`.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation AddIntegrationToSandboxConfig($input: AddIntegrationToSandboxConfigInput!) {
  addIntegrationToSandboxConfig(input: $input) {
    sandboxConfig { id name }
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "sandboxConfigId": "<ID>",
    "sandboxIntegrationId": "<ID>"
  }
}
```

### createSandboxJob

Create a new managed agent sandbox job

`createSandboxJob(input: CreateSandboxJobInput!): CreateSandboxJobPayload`

#### Arguments

**input** `CreateSandboxJobInput!` *required*

**CreateSandboxJobInput fields**

**spaceId** `ID!` *required*

The space to create the job in

**initialPrompt** `String`

Initial prompt for regular sandbox jobs. Omit or leave empty when agentTemplateKey is set. Setup Repo sessions use a default when omitted or empty.

**agentTemplateKey** `String`

Optional repository-owned agent template resolved by the sandbox controller.

**templateInputs** `String`

JSON object of declared inputs for the selected agent template.

**integrations** `[SandboxIntegrationRefInput!]`

Optional list of sandbox integrations (provider + relay GID) to expose inside the sandbox pod.

**SandboxIntegrationRefInput fields**

**provider** `String!` *required*

Provider key matching sandbox\_integrations.provider — used by sandboxcontroller to dispatch per-provider secret materialization.

**id** `ID!` *required*

Relay GID of the sandbox integration row to bind to this job or automation.

**sandboxConfigId** `ID`

Optional Relay GID of the sandbox config to associate with this job.

**isSetupSession** `Boolean`

Marks this job as a Setup Repo session — the only path that can produce sandbox\_templates via the Save as Template flow. When true and initialPrompt is omitted, the server applies a canned setup prompt.

**providerId** `ID`

Optional Relay GID of sandbox provider. Use for non-k8s providers.

**repoUrl** `String`

Optional repository url. When omitted, sandbox config repo is used.

**claudeAgentId** `String`

Claude managed agent id. Required when provider is claude\_managed unless present on sandbox config.

**claudeEnvironmentId** `String`

Claude managed environment id. Required when provider is claude\_managed unless present on sandbox config.

**llmIntegrationId** `ID`

Optional Relay GID of an agent-eligible Anthropic AI Provider (llm\_integration) to pin as this run's runtime. Only valid for ad-hoc (no sandboxConfigId) jobs on the Arize/k8s provider; forbidden for claude\_managed. Omit to use the Arize-managed model.

**agentRoleId** `ID`

Optional Relay GID of a managed-agent role to bind for this run. Only valid for ad-hoc (no sandboxConfigId) jobs; config-backed jobs inherit the role from the sandbox config. Omit to use the default Managed Agent role.

**harness** `Harness`

Agent runtime to run this job with. Omit for the default (claude\_code). One of: `claude_code`, `codex`, `cursor`, `opencode`.

**clientMutationId** `String`

#### Returns

**jobId** `ID!`

The Relay global ID of the newly created sandbox job

**sandboxId** `ID`

The Relay global ID of the newly created sandbox, if one exists.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation CreateSandboxJob($input: CreateSandboxJobInput!) {
  createSandboxJob(input: $input) {
    jobId
    sandboxId
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "spaceId": "<ID>"
  }
}
```

### createSandboxTemplate

Snapshot a sandbox and save it as a reusable template for future jobs

`createSandboxTemplate(input: CreateSandboxTemplateInput!): CreateSandboxTemplatePayload`

#### Arguments

**input** `CreateSandboxTemplateInput!` *required*

**CreateSandboxTemplateInput fields**

**jobId** `String!` *required*

The global ID of the sandbox job to snapshot

**name** `String!` *required*

Name for the new template

**clientMutationId** `String`

#### Returns

**templateId** `String!`

The integer primary key of the newly created sandbox template

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation CreateSandboxTemplate($input: CreateSandboxTemplateInput!) {
  createSandboxTemplate(input: $input) {
    templateId
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "jobId": "<string>",
    "name": "<string>"
  }
}
```

### sendSandboxMessage

Send a follow-up message to a running sandbox agent

`sendSandboxMessage(input: SendSandboxMessageInput!): SendSandboxMessagePayload`

#### Arguments

**input** `SendSandboxMessageInput!` *required*

**SendSandboxMessageInput fields**

**jobId** `String!` *required*

Global ID of the sandbox job to message

**message** `String!` *required*

The message to send to the Claude Code agent

**clientMutationId** `String`

#### Returns

**jobId** `String!`

The sandbox job ID the message was sent to

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation SendSandboxMessage($input: SendSandboxMessageInput!) {
  sendSandboxMessage(input: $input) {
    jobId
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "jobId": "<string>",
    "message": "<string>"
  }
}
```

### createAutomation

Create a new managed agent automation.

`createAutomation(input: CreateAutomationInput!): CreateAutomationPayload`

#### Arguments

**input** `CreateAutomationInput!` *required*

**CreateAutomationInput fields**

**spaceId** `ID!` *required*

Space the automation lives under.

**name** `String!` *required*

User-supplied automation name.

**promptTemplate** `String!` *required*

Go text/template prompt for custom automations. Must be empty when agentTemplateKey is set.

**agentTemplateKey** `String`

Optional repository-owned agent template resolved by the sandbox controller.

**templateInputs** `String`

JSON object of declared inputs for the selected agent template.

**sandboxConfigId** `ID!` *required*

SandboxConfig Relay GID to spawn jobs from.

**repo** `String`

Optional per-automation repo (org/repo) override. When set, spawned jobs use this repo instead of the bound SandboxConfig's repo, so automations sharing a preset can target different repos. Omitted/empty inherits the config's repo.

**agentProfile** `AgentProfile!` *required*

Settings and system-prompt preset each spawned job runs with. One of: `default`, `harness_evaluation`.

**harness** `Harness!` *required*

Agent runtime each spawned job uses. Omit for the default (claude\_code). One of: `claude_code`, `codex`, `cursor`, `opencode`.

**integrations** `[SandboxIntegrationRefInput!]`

Optional list of sandbox integrations (provider + relay GID) to bind to each job spawned by this automation. At most one integration per provider.

**SandboxIntegrationRefInput fields**

**provider** `String!` *required*

Provider key matching sandbox\_integrations.provider — used by sandboxcontroller to dispatch per-provider secret materialization.

**id** `ID!` *required*

Relay GID of the sandbox integration row to bind to this job or automation.

**cron** `AutomationCronTriggerInput`

Cron trigger. Exactly one of cron or metric must be provided.

**AutomationCronTriggerInput fields**

**cadenceSeconds** `Int!` *required*

Fire every N seconds. Must be > 0.

**metric** `AutomationMetricTriggerInput`

Metric trigger. Exactly one of cron or metric must be provided.

**AutomationMetricTriggerInput fields**

**modelId** `ID!` *required*

Relay GID of the Model the value is scoped to (custom metric host model, or model whose spans the filter applies to).

**customMetricId** `ID`

Relay GID of the CustomMetric to evaluate. Mutually exclusive with queryFilter.

**queryFilter** `String`

Arize span-filter DSL expression (e.g. `attributes["status_code"] = "ERROR"`). Value compared against threshold is the COUNT of matching spans in the lookback window. Mutually exclusive with customMetricId.

**lookbackSeconds** `Int!` *required*

Window (in seconds) the value is computed over. Must be > 0.

**threshold** `Float!` *required*

Threshold the value is compared against.

**operator** `AutomationMetricOperator!` *required*

Comparison: fire when value \<op> threshold. One of: `GT`, `LT`, `GTE`, `LTE`, `EQ`.

**evalIntervalSeconds** `Int!` *required*

How often to re-evaluate. Must be > 0.

**maxJobsPerWindow** `Int`

Cooloff: max fires in cooloff\_window\_seconds. 0/omitted = no limit.

**cooloffWindowSeconds** `Int`

Cooloff window. 0/omitted = no limit.

**producer** `String`

Optional issue-producer identity (e.g. 'cost'). When set, the automation is authorized to file issues under this producer and must be project-scoped: a cron automation supplies modelId, a metric trigger carries its own. Omitted = an ordinary automation. Signal is NOT set here.

**modelId** `ID`

Relay GID of the Model (project) the automation is scoped to. Stored on any cron automation that supplies it, so the project an agent watches can be queried instead of parsed out of its prompt. Required for a cron issue producer — issue producers are project-scoped. A metric trigger carries its own modelId and this field is ignored.

**clientMutationId** `String`

#### Returns

**automationId** `ID!`

Relay GID of the newly created automation.

**jobId** `ID`

Relay GID of the initial job, or null when it could not be started.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation CreateAutomation($input: CreateAutomationInput!) {
  createAutomation(input: $input) {
    automationId
    jobId
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "spaceId": "<ID>",
    "name": "<string>",
    "promptTemplate": "<string>",
    "sandboxConfigId": "<ID>",
    "agentProfile": "default",
    "harness": "claude_code"
  }
}
```

### updateAutomation

Replace an existing automation's trigger (cron cadence or metric config) in full and set or clear its per-automation agent-runtime override, in a single save. Exactly one of cron/metric must be provided, mirroring createAutomation. Recomputes the next fire time so the new schedule takes effect on the next cycle.

`updateAutomation(input: UpdateAutomationInput!): UpdateAutomationPayload`

#### Arguments

**input** `UpdateAutomationInput!` *required*

**UpdateAutomationInput fields**

**spaceId** `ID!` *required*

Space the automation belongs to (for tenancy verification).

**automationId** `ID!` *required*

Relay GID of the automation to update.

**cron** `AutomationCronTriggerInput`

Cron trigger. Exactly one of cron or metric must be provided.

**AutomationCronTriggerInput fields**

**cadenceSeconds** `Int!` *required*

Fire every N seconds. Must be > 0.

**metric** `AutomationMetricTriggerInput`

Metric trigger. Exactly one of cron or metric must be provided.

**AutomationMetricTriggerInput fields**

**modelId** `ID!` *required*

Relay GID of the Model the value is scoped to (custom metric host model, or model whose spans the filter applies to).

**customMetricId** `ID`

Relay GID of the CustomMetric to evaluate. Mutually exclusive with queryFilter.

**queryFilter** `String`

Arize span-filter DSL expression (e.g. `attributes["status_code"] = "ERROR"`). Value compared against threshold is the COUNT of matching spans in the lookback window. Mutually exclusive with customMetricId.

**lookbackSeconds** `Int!` *required*

Window (in seconds) the value is computed over. Must be > 0.

**threshold** `Float!` *required*

Threshold the value is compared against.

**operator** `AutomationMetricOperator!` *required*

Comparison: fire when value \<op> threshold. One of: `GT`, `LT`, `GTE`, `LTE`, `EQ`.

**evalIntervalSeconds** `Int!` *required*

How often to re-evaluate. Must be > 0.

**cooloffWindowSeconds** `Int`

Cooloff window. 0/omitted = server-defaulted.

**llmIntegrationId** `ID`

LLM integration relay ID to pin. Null clears the override (falls back to the bound sandbox\_config's runtime, then the space default, then Arize-managed).

**clientMutationId** `String`

#### Returns

**ok** `Boolean!`

True when the update completed.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation UpdateAutomation($input: UpdateAutomationInput!) {
  updateAutomation(input: $input) {
    ok
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "spaceId": "<ID>",
    "automationId": "<ID>"
  }
}
```

### deleteAutomation

Soft-delete a managed agent automation.

`deleteAutomation(input: DeleteAutomationInput!): DeleteAutomationPayload`

#### Arguments

**input** `DeleteAutomationInput!` *required*

**DeleteAutomationInput fields**

**spaceId** `ID!` *required*

Space the automation belongs to (for tenancy verification).

**automationId** `ID!` *required*

Relay GID of the automation to soft-delete.

**clientMutationId** `String`

#### Returns

**ok** `Boolean!`

True when the soft-delete completed.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation DeleteAutomation($input: DeleteAutomationInput!) {
  deleteAutomation(input: $input) {
    ok
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "spaceId": "<ID>",
    "automationId": "<ID>"
  }
}
```

### setAutomationEnabled

Pause or resume a managed agent automation. Disabled automations stay in the list (keeping their config) but are skipped by the scheduler.

`setAutomationEnabled(input: SetAutomationEnabledInput!): SetAutomationEnabledPayload`

#### Arguments

**input** `SetAutomationEnabledInput!` *required*

**SetAutomationEnabledInput fields**

**spaceId** `ID!` *required*

Space the automation belongs to (for tenancy verification).

**automationId** `ID!` *required*

Relay GID of the automation to update.

**enabled** `Boolean!` *required*

true to resume, false to pause.

**clientMutationId** `String`

#### Returns

**ok** `Boolean!`

True when the update completed.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation SetAutomationEnabled($input: SetAutomationEnabledInput!) {
  setAutomationEnabled(input: $input) {
    ok
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "spaceId": "<ID>",
    "automationId": "<ID>",
    "enabled": true
  }
}
```

### setAutomationRepo

Set or clear an automation's repo binding — the repo its spawned jobs and 'Open PR' / 'Open GitHub issue' actions target. Overrides the bound sandbox\_config's repo; an empty string clears the binding so jobs inherit the config's repo. Used to attach or change the repo for a producer agent (e.g. Cost), which keeps its repo on the automation rather than the shared preset.

`setAutomationRepo(input: SetAutomationRepoInput!): SetAutomationRepoPayload`

#### Arguments

**input** `SetAutomationRepoInput!` *required*

**SetAutomationRepoInput fields**

**spaceId** `ID!` *required*

Space the automation belongs to (for tenancy verification).

**automationId** `ID!` *required*

Relay GID of the automation to update.

**repo** `String!` *required*

The org/repo (or repo URL) to bind. Empty string clears the binding.

**clientMutationId** `String`

#### Returns

**ok** `Boolean!`

True when the update completed.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation SetAutomationRepo($input: SetAutomationRepoInput!) {
  setAutomationRepo(input: $input) {
    ok
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "spaceId": "<ID>",
    "automationId": "<ID>",
    "repo": "<string>"
  }
}
```

### triggerAutomationNow

Spawn a job for an automation immediately, bypassing next\_fire\_at. All admission gates (cooloff, capacity, signal-issue limit) still apply. next\_fire\_at is reset to now+cadence so the schedule resumes from now.

`triggerAutomationNow(input: TriggerAutomationNowInput!): TriggerAutomationNowPayload`

#### Arguments

**input** `TriggerAutomationNowInput!` *required*

**TriggerAutomationNowInput fields**

**automationId** `ID!` *required*

Relay GID of the automation to trigger.

**additionalPrompt** `String`

Optional extra instructions appended to the automation's rendered prompt.

**clientMutationId** `String`

#### Returns

**jobId** `Int!`

DB id of the newly created sandbox job.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation TriggerAutomationNow($input: TriggerAutomationNowInput!) {
  triggerAutomationNow(input: $input) {
    jobId
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "automationId": "<ID>"
  }
}
```

### setSignalEnabled

Enable or disable the Signal automation for a project. Enabling lazily provisions the built-in Signal preset; disabling pauses the scheduler but keeps the automation.

`setSignalEnabled(input: SetSignalEnabledInput!): SetSignalEnabledPayload`

#### Arguments

**input** `SetSignalEnabledInput!` *required*

**SetSignalEnabledInput fields**

**modelId** `ID!` *required*

Relay GID of the project (model) to update.

**enabled** `Boolean!` *required*

true to enable Signal, false to disable.

**llmIntegrationId** `ID`

Optional relay GID of the agent-eligible Anthropic AI Provider integration Signal should run on for this project. Null/omitted uses the Arize-managed model. Only applied when enabling.

**clientMutationId** `String`

#### Returns

**ok** `Boolean!`

True when the update completed.

**signalStatus** `SignalStatus!`

The Signal status after the update.

**SignalStatus fields**

Scalar fields: `state`, `automationId`, `presetName`, `hasAttachedRepo`, `cadenceSeconds`, `additionalContext`, `llmIntegrationId`, `lastFiredUnix`, `nextFireUnix`, `issueLimitReached`.

Object fields (select subfields): `agentConfig`.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation SetSignalEnabled($input: SetSignalEnabledInput!) {
  setSignalEnabled(input: $input) {
    ok
    signalStatus { state }
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "modelId": "<ID>",
    "enabled": true
  }
}
```

### setSignalEnabledBulk

Enable or disable the Signal automation for multiple projects in one call. Each project is processed independently — a single project's failure does not abort the others — and per-project outcomes are returned in `results`.

`setSignalEnabledBulk(input: SetSignalEnabledBulkInput!): SetSignalEnabledBulkPayload`

#### Arguments

**input** `SetSignalEnabledBulkInput!` *required*

**SetSignalEnabledBulkInput fields**

**modelIds** `[ID!]!` *required*

Relay GIDs of the projects (models) to update.

**enabled** `Boolean!` *required*

true to enable Signal, false to disable.

**llmIntegrationId** `ID`

Optional relay GID of the agent-eligible Anthropic AI Provider integration Signal should run on. Applied to every selected project. Null/omitted uses the Arize-managed model. Only applied when enabling.

**clientMutationId** `String`

#### Returns

**results** `[SignalEnabledBulkResult!]!`

The per-project outcome of the bulk update.

**SignalEnabledBulkResult fields**

Scalar fields: `modelId`, `ok`, `error`.

Object fields (select subfields): `signalStatus`.

**okCount** `Int!`

Number of projects that were updated successfully.

**failedCount** `Int!`

Number of projects that failed to update.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation SetSignalEnabledBulk($input: SetSignalEnabledBulkInput!) {
  setSignalEnabledBulk(input: $input) {
    results { modelId }
    okCount
    failedCount
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "modelIds": [
      "<ID>"
    ],
    "enabled": true
  }
}
```

### updateSignalConfig

Update a project's Signal config: the run cadence and the free-form additional context injected into the Signal prompt.

`updateSignalConfig(input: UpdateSignalConfigInput!): UpdateSignalConfigPayload`

#### Arguments

**input** `UpdateSignalConfigInput!` *required*

**UpdateSignalConfigInput fields**

**modelId** `ID!` *required*

Relay GID of the project (model) to update.

**cadenceSeconds** `Int!` *required*

New run cadence in seconds. Must be between 4 hours and 30 days.

**additionalContext** `String!` *required*

Free-form additional context injected into the Signal prompt. Empty string clears it.

**llmIntegrationId** `ID`

Relay GID of the agent runtime integration to use for this Signal. Null sets it to Arize-managed. Omit to leave the current runtime unchanged.

**harness** `Harness`

Agent runtime this Signal automation runs on. Omit to leave the automation's harness unchanged; null selects Claude Code. Determines whether llmIntegrationId must be an Anthropic or OpenAI AI Provider. One of: `claude_code`, `codex`, `cursor`, `opencode`.

**clientMutationId** `String`

#### Returns

**ok** `Boolean!`

True when the update completed.

**signalStatus** `SignalStatus!`

The Signal status after the update.

**SignalStatus fields**

Scalar fields: `state`, `automationId`, `presetName`, `hasAttachedRepo`, `cadenceSeconds`, `additionalContext`, `llmIntegrationId`, `lastFiredUnix`, `nextFireUnix`, `issueLimitReached`.

Object fields (select subfields): `agentConfig`.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation UpdateSignalConfig($input: UpdateSignalConfigInput!) {
  updateSignalConfig(input: $input) {
    ok
    signalStatus { state }
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "modelId": "<ID>",
    "cadenceSeconds": 1,
    "additionalContext": "<string>"
  }
}
```

### setSignalAgentConfig

Attach a custom agent config (sandbox config) to a project's Signal automation, repointing it away from the shared built-in default.

`setSignalAgentConfig(input: SetSignalAgentConfigInput!): SetSignalAgentConfigPayload`

#### Arguments

**input** `SetSignalAgentConfigInput!` *required*

**SetSignalAgentConfigInput fields**

**modelId** `ID!` *required*

Relay GID of the project (model) to update.

**sandboxConfigId** `ID!` *required*

Relay GID of the sandbox config (agent config) to attach.

**clientMutationId** `String`

#### Returns

**ok** `Boolean!`

True when the update completed.

**signalStatus** `SignalStatus!`

The Signal status after the update.

**SignalStatus fields**

Scalar fields: `state`, `automationId`, `presetName`, `hasAttachedRepo`, `cadenceSeconds`, `additionalContext`, `llmIntegrationId`, `lastFiredUnix`, `nextFireUnix`, `issueLimitReached`.

Object fields (select subfields): `agentConfig`.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation SetSignalAgentConfig($input: SetSignalAgentConfigInput!) {
  setSignalAgentConfig(input: $input) {
    ok
    signalStatus { state }
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "modelId": "<ID>",
    "sandboxConfigId": "<ID>"
  }
}
```

### resetSignalAgentConfig

Revert a project's Signal automation back to the shared built-in agent config, detaching any custom config (the custom config itself is left intact).

`resetSignalAgentConfig(input: ResetSignalAgentConfigInput!): ResetSignalAgentConfigPayload`

#### Arguments

**input** `ResetSignalAgentConfigInput!` *required*

**ResetSignalAgentConfigInput fields**

**modelId** `ID!` *required*

Relay GID of the project (model) to update.

**clientMutationId** `String`

#### Returns

**ok** `Boolean!`

True when the update completed.

**signalStatus** `SignalStatus!`

The Signal status after the update.

**SignalStatus fields**

Scalar fields: `state`, `automationId`, `presetName`, `hasAttachedRepo`, `cadenceSeconds`, `additionalContext`, `llmIntegrationId`, `lastFiredUnix`, `nextFireUnix`, `issueLimitReached`.

Object fields (select subfields): `agentConfig`.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation ResetSignalAgentConfig($input: ResetSignalAgentConfigInput!) {
  resetSignalAgentConfig(input: $input) {
    ok
    signalStatus { state }
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "modelId": "<ID>"
  }
}
```

### setSignalIssueStatus

Set the lifecycle status of a Signal issue — Resolve, Ignore, or re-open it. Resolving/ignoring removes it from the active dashboard view; a resolved issue silently re-opens if the problem recurs, while an ignored one stays suppressed. Gated by hasSignalIssueWriteAccess (PROJECT\_UPDATE).

`setSignalIssueStatus(input: SetSignalIssueStatusInput!): SetSignalIssueStatusPayload`

#### Arguments

**input** `SetSignalIssueStatusInput!` *required*

**SetSignalIssueStatusInput fields**

**id** `ID!` *required*

Signed relay GID of the Signal issue to update. The server resolves it to the signal\_issues row and enforces tenancy from the issue's owning project.

**status** `SignalIssueStatus!` *required*

Target lifecycle status: OPEN (re-open / un-dismiss), RESOLVED, or IGNORED. One of: `OPEN`, `RESOLVED`, `IGNORED`.

**clientMutationId** `String`

#### Returns

**signalIssue** `SignalIssue!`

The Signal issue after the update, with its persisted status. Returning the node lets Relay merge the new status into its store.

**SignalIssue fields**

Scalar fields: `id`, `issueKey`, `title`, `bodyMd`, `severity`, `producer`, `status`, `entity`, `outcome`, `tags`, `traceIds`, `totalMatchCount`, `estimatedSavingsUsd`, `firstSeen`, `lastSeen`, `lastJobId`, `projectId`, `projectName`, `hasAttachedRepo`, `githubIntegrationId`, `automationId`.

Object fields (select subfields): `agentConfig`, `prJobs`, `actions`, `pendingActions`.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation SetSignalIssueStatus($input: SetSignalIssueStatusInput!) {
  setSignalIssueStatus(input: $input) {
    signalIssue { id status }
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "id": "<ID>",
    "status": "OPEN"
  }
}
```

### openSignalIssuePR

Launch a managed agent sandbox job that fixes a Signal issue and opens a PR, borrowing the project's Signal automation repo/agent config. Gated by hasSignalIssueWriteAccess (PROJECT\_UPDATE).

`openSignalIssuePR(input: OpenSignalIssuePRInput!): OpenSignalIssuePRPayload`

#### Arguments

**input** `OpenSignalIssuePRInput!` *required*

**OpenSignalIssuePRInput fields**

**id** `ID!` *required*

Signed relay GID of the Signal issue to fix. The server resolves it to the signal\_issues row and enforces tenancy from the issue's owning project.

**clientMutationId** `String`

#### Returns

**jobId** `ID!`

Relay GID of the newly launched sandbox job.

**sandboxId** `ID`

Relay GID of the sandbox provisioned for the job, if one exists yet.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation OpenSignalIssuePR($input: OpenSignalIssuePRInput!) {
  openSignalIssuePR(input: $input) {
    jobId
    sandboxId
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "id": "<ID>"
  }
}
```

### openSignalIssueGitHubIssue

File a GitHub issue for a Signal issue, using the project's Signal repo and its connected GitHub token. Runs entirely in app-server (no sandbox agent). Gated by hasSignalIssueWriteAccess (PROJECT\_UPDATE).

`openSignalIssueGitHubIssue(input: OpenSignalIssueGitHubIssueInput!): OpenSignalIssueGitHubIssuePayload`

#### Arguments

**input** `OpenSignalIssueGitHubIssueInput!` *required*

**OpenSignalIssueGitHubIssueInput fields**

**id** `ID!` *required*

Signed relay GID of the Signal issue to file. The server resolves it to the signal\_issues row and enforces tenancy from the issue's owning project.

**clientMutationId** `String`

#### Returns

**issueUrl** `String!`

html\_url of the newly created GitHub issue.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation OpenSignalIssueGitHubIssue($input: OpenSignalIssueGitHubIssueInput!) {
  openSignalIssueGitHubIssue(input: $input) {
    issueUrl
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "id": "<ID>"
  }
}
```

### deleteSignal

Delete the Signal automation for a project. Idempotent — deleting an absent Signal is a no-op.

`deleteSignal(input: DeleteSignalInput!): DeleteSignalPayload`

#### Arguments

**input** `DeleteSignalInput!` *required*

**DeleteSignalInput fields**

**modelId** `ID!` *required*

Relay GID of the project (model) whose Signal to delete.

**clientMutationId** `String`

#### Returns

**ok** `Boolean!`

True when the delete completed.

#### Example

Only required input fields are shown. Replace `<ID>` and `<string>` placeholders with real values; the [object graph](/docs/ax/graphql-reference/queries/object-graph) page shows how to look IDs up.

```graphql Mutation theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
mutation DeleteSignal($input: DeleteSignalInput!) {
  deleteSignal(input: $input) {
    ok
  }
}
```

```json Variables theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "input": {
    "modelId": "<ID>"
  }
}
```
