Hand a coding task to an agent, wait while it works, and continue with its pull request.
The Coding agent step (wait:agent@1, in the Studio under AI → Coding agents) starts a cloud coding agent on a GitHub repository with your own account: GitHub Copilot's cloud agent, a Cursor cloud agent, or a Claude managed agent. The run then waits, like an approval, until the agent finishes (up to 90 days), and continues with the pull request it opened. Kovca checks on the agent about a minute after it starts, then less often the longer it runs (at most every 15 minutes).
{
"nodes": [
{ "id": "input", "ref": "utility:input@1", "config": { "trigger": { "id": "github/issue_created", "...": "..." } } },
{ "id": "fix", "ref": "wait:agent@1", "config": {
"provider": "github_copilot",
"connection": "conn_...",
"repository": { "value": "acme/storefront" },
"baseBranch": "main",
"prompt": "Fix issue #{{input.number}}: {{input.title}}\n\n{{input.body}}",
"expiresIn": { "amount": 1, "unit": "days" } } },
{ "id": "ask_review", "ref": "action:slack/send_message@1", "config": { "...": "post nodes.fix.output.pr_url" } },
{ "id": "escalate", "ref": "action:slack/send_message@1", "config": { "...": "the agent couldn't fix it" } }
],
"edges": [
{ "from": "input", "to": "fix" },
{ "from": "fix", "to": "ask_review", "branch": "succeeded" },
{ "from": "fix", "to": "escalate", "branch": "failed" },
{ "from": "fix", "to": "escalate", "branch": "expired" }
]
}requested runs as soon as the agent starts, with nodes.<id>.output.session_url (where to follow it on GitHub or Cursor).succeeded runs when the agent finished its work; failed when it stopped with an error, was cancelled, or Kovca could no longer reach it with the step's account (output.failure says which); expired when it was still working at the step's expiry (1 day unless you set it). Kovca then asks Cursor and Claude agents to stop; GitHub has no way to stop a task over its API. Cancelling a waiting run stops its agents the same way.| Field | Type | Description |
|---|---|---|
| agent_job_id | string | Kovca's ID for the job (agt_…). |
| provider | string | github_copilot, cursor, or claude. |
| session_url | string | null | The agent's page on GitHub or Cursor. Null for Claude. |
| status | string | null | succeeded, failed, or expired once the step ended. |
| failure | string | null | agent_failed, cancelled, connection_refused, or job_not_found on the failed branch. |
| pr_url | string | null | The pull request the agent opened, when it opened one. |
| branch | string | null | The branch it pushed (GitHub, Cursor). |
| summary | string | null | The agent's final message (Cursor, Claude), up to 4,000 characters. |
| finished_at | string | null | When Kovca saw the agent finish. |
The step's connection is your account with the agent's provider; Kovca sends its key only to that provider's API. Add connections in Connections.
Needs a Copilot plan that can start cloud agent tasks over the API (Copilot Business or Enterprise), with the agent turned on for the repository. Use your connected GitHub account, or a Bearer connection to https://api.github.com with a fine-grained personal access token that has the Agent tasks repository permission (read and write). Tasks always open a pull request. GitHub's agent tasks API is in public preview.
A Bearer connection to https://api.cursor.com with a Cursor API key (Cursor dashboard → API Keys). Cursor needs access to the repository through its GitHub integration. The agent opens a pull request when it finishes. Cursor's Cloud Agents API is in public beta.
An API key connection to https://api.anthropic.com (header x-api-key) with a Claude API key, plus the IDs of the managed agent and environment the session runs in (create them in the Claude Console or API). For a private repository, choose a Bearer connection to https://api.github.com with a GitHub token: Kovca passes it to Claude, which clones the repository with it. To open pull requests, give the managed agent its own GitHub tools; Kovca reports the last pull request URL in the agent's final message. Claude Managed Agents is in beta.
Studio tests and Instant Workflow trials never start an agent: the step ends at once with the outcome you pick in the test panel (succeeded by default, with a sample pull request), so you can test before choosing a connection or repository. A new step's task is {{input.message}}; publishing needs the connection and repository. Over MCP, test_workflow takes wait_outcomes. Instant Workflows never share your connections: copies of a shared workflow connect their own.
| Field | Type | Description |
|---|---|---|
| Task | limit | 20,000 characters as written; 32 KB once its {{ }} values are filled in. |
| Longest wait | limit | 90 days; agent steps count toward the 5 waits per workflow. |
| Repositories | limit | GitHub, as owner/name. |
Starting an agent uses 2 credits, like an app action; waiting and Kovca's checks are free. The agent's own usage is billed by its provider to your account. If an agent can't start (a refused key, an unknown repository), the step fails and nothing is charged. See Billing.