Skip to content

Cursor

Cursor’s cloud agents are a hosted API: Cursor clones your repo, runs the agent, and opens a PR. Beeps creates an agent run when an alert fires, polls Cursor for the run’s status, and writes the PR URL onto the alert responder.

Cloud agents work with Privacy Mode: Cursor doesn’t train on your code, and code is retained only for the duration of the run.

  • A Cursor account with cloud agents enabled.
  • A GitHub repository connected to Cursor that the agent can clone. The repository URL goes on the relay rule, not the integration.
  1. Connect your GitHub account and grant access to the target repository from the Cloud Agents dashboard.
  2. Create an API key under Dashboard → API Keys. A user API key works; for team setups prefer a service account API key so the integration isn’t tied to one person’s account.
  3. Save the API key; you’ll paste it into beeps as apiKey.

Beeps verifies the key against Cursor’s API at integration-creation time, so a bad key is caught immediately rather than failing on the first alert.

Create the integration:

const cursorIntegration = await client.integration.create({
name: "Cursor Agent",
provider: "cursor",
apiKey: process.env.CURSOR_API_KEY,
});

Reference it from a relay rule. Cursor requires a repository URL on the rule. That’s the repo Cursor will clone and open the PR against:

await client.relay.rules.create(relayId, {
name: "Cursor Auto-Fix",
ruleType: "agent",
config: {
agentType: "cursor",
integrationId: cursorIntegration.id,
repository: "https://github.com/org/repo",
autoCreatePr: true,
pollInterval: 30000,
maxPollAttempts: 120,
},
});

Cursor doesn’t use metadata. Only apiKey is required.

FieldTypeRequiredDefaultDescription
agentType"cursor"yesSelects the Cursor agent
integrationIdstringyesThe Cursor integration’s id
repositorystring (URL)yesGitHub repo URL Cursor will clone
autoCreatePrbooleannotrueWhether the agent should open a PR
modelstringnoCursor’s defaultCursor model id to run the agent with

Cursor pushes the agent’s work to an auto-generated cursor/... branch; the branch name can’t be chosen through the API.

The shared polling and storm-control fields are documented in Relay Rules.

Beeps targets the Cursor Cloud Agents v1 API (https://api.cursor.com/v1/agents). v1 is built around durable agents and per-prompt runs: beeps captures the run created at dispatch and polls that run for status and the PR URL. The legacy v0 endpoint had a different request and response shape; customers still pinned to v0 via an explicit config.endpoint override should plan to migrate, since v0 is no longer documented.

invalid_cursor_token at integration creation

Section titled “invalid_cursor_token at integration creation”

The API key was rejected by Cursor. Confirm it hasn’t been revoked and was created at Dashboard → API Keys on the account (or service account) that has access to your repositories.

The API key is valid but lacks permission — for example a key without access to the repository’s team, or an Enterprise-only capability on a non-Enterprise plan. Recreate the key from Dashboard → API Keys with the right account, or use a service account key for the team that owns the repo.

The repository URL must be on the rule config, not the integration metadata.

Cursor API error: response missing agent.id

Section titled “Cursor API error: response missing agent.id”

You’re on a config.endpoint that returns a v0-shaped response. Either remove the endpoint override (recommended) or update it to a v1 path.