Skip to main content
Work Management

Autonomous Work

Trigger a Waker or WakerFlow by schedule, event, or API and manage limits, run records, and failures.

Autonomous Work starts a task automatically after its behavior has been validated. A task can run one Waker or a WakerFlow. Work that still requires frequent clarification or step-by-step judgment should remain a chat task. Autonomous Work owns when work starts, what input it receives, and when it stops. WakerFlow owns the stages and role handoffs after a run starts. See WakerFlow for workflow design and diagnosis.

Open Autonomous Work

Path: left navigation → Autonomous Work. The page summarizes total tasks, active tasks, and tasks handled by Wakers or WakerFlows. Filter by response type, trigger type, and status. From a Waker detail page, Work → Autonomous Work shows only tasks related to that Waker. A completed run only means execution ended; inspect the run input, process, result, and artifact before acceptance.
Review counts, executors, and status from the global Autonomous Work page

Check prerequisites

An autonomous task normally runs without a person present to add missing context. Check the following before creating one:
  • Executor: The Waker is enabled and responds normally. For a WakerFlow, complete at least one successful manual run and verify its human-confirmation nodes and output.
  • Model: The Waker's model is available. Select a specific model when repeatability matters, or use Auto to follow the system recommendation.
  • Workspace: The Waker can access the required directory or project. A local directory requires the device, QoderWake, and directory to remain available when the trigger fires.
  • Capabilities and access: Validate required Skills, connectors, network access, and external accounts in a normal chat first. Do not use a production automation as the first authorization test.
  • Task boundary: Keep work that still needs repeated goal clarification in a chat. Prefer WakerFlow for multiple stages, fixed approvals, or human-confirmation steps.

Choose a trigger

TriggerBest forFirst validation
ScheduleDaily or weekly reports, periodic checks, and one-time reservationsSet a run a few minutes ahead and verify timezone and next-run time
EventExternal systems that push Issue, Pull Request, or other changesCreate one safe test event; inspect event activity before the task result
APITicketing, CI/CD, monitoring, or business systems that provide structured dataUse a test PAT and a JSON body without sensitive data
Scheduled polling, when availableSources that cannot push events but can be queried for changesStart at low frequency and verify filters and deduplication
Prefer one trigger source for one business change. If event delivery and polling cover the same object, add a stable deduplication key in the task or caller.

Create an autonomous task

  1. Select New Automation.
  2. Enter a name in the form “object + action + frequency or source.”
  3. Add one or more trigger conditions. A task can contain up to five triggers.
  4. Choose an execution method:
    • Waker for stable work owned by one role.
    • WakerFlow for multiple stages, parallel work, fixed handoffs, or structured input.
  5. Select the execution object and verify that it is enabled.
  6. When the response method is Waker, select Auto or a specific model. If that model becomes unavailable or is removed, edit and retest the task.
  7. Write the task description: recurring objective, input scope, output, and prohibited actions.
  8. Choose the default workspace, a local directory, or a project.
  9. Open advanced settings and configure maximum runs and an end date.
  10. Save, run manually, then test the real trigger before enabling production use.
Use this structure for a task description:
Objective: what every invocation must accomplish.
Input: allowed data, time range, and business objects.
Processing rules: required steps, decisions, and error handling.
Output: response format, file name, destination, or external action.
Acceptance criteria: how to verify the business result, not only a Completed status.
Prohibited actions: content that must not be changed, deleted, published, or sent.
For code, file, or external-system writes, include test requirements, target branch, output location, and actions that require human approval.
Configure triggers, execution method, workspace, and advanced settings in one dialog

Configure a schedule trigger

Schedule triggers are suitable for daily reports, weekly summaries, and recurring checks.
  1. Select Schedule.
  2. Choose recurring or one-time execution and set the date, time, and repeat rule.
  3. Verify the next-run time and business timezone.
  4. For the first test, schedule a run a few minutes ahead; switch to the final cadence only after success.
The task will not trigger when paused, after reaching the run limit, or after the end date. A local Waker or directory must be available at the scheduled time. Avoid a cadence that overlaps the previous run when both write the same artifact.

Configure an event trigger

Event triggers respond to repository Issues, Pull Requests, or other supported connector events.
  1. Select Event and authorize the event source.
  2. Select the repository or object.
  3. Choose the event type and source-specific filters, such as create, edit, repository, branch, label, or object scope. Available fields vary by source.
  4. Save and create a safe test event in the source system.
  5. In task details, check Event Activity or run history. First confirm that the event arrived, then confirm that it started exactly one expected task.
Some event-triggered tasks cannot use Run now and must be tested with a real event from the source system. GitHub and other webhook details may show Event Activity instead of normal run history; confirm delivery there, then open the related task or chat to accept the result. When nothing runs, check authorization, object scope, event type, filters, task status, and event activity. When duplicate runs appear, check for overlapping trigger conditions. For GitHub, verify that the authorized account can access the repository; repository, Issue / Pull Request, and change types are correct; branch, label, and object filters do not overmatch; and the test event appears in Event Activity. Use a test repository or low-risk object before enabling merge or release-related events.

Configure scheduled polling, when available

Use scheduled polling when a source cannot push events and the page exposes a polling trigger:
  1. Select and authorize the source.
  2. Choose the object scope, filters, and polling interval.
  3. Define the initial time or cursor so the first run does not process all history accidentally.
  4. Use a stable object ID or update time for deduplication.
  5. Validate the full path: discover change → create task → advance cursor.
Available fields and minimum intervals follow the current page. Start slowly when the source has an API limit, and ensure retries cannot modify or send the same object twice.

Configure an API trigger

API triggers let a ticketing system, CI/CD pipeline, monitoring service, or business application start autonomous work on demand. The caller submits structured JSON; QoderWake resolves that data into the task description and dispatches it to the selected Waker or WakerFlow.

Create a personal access token

API requests use a personal access token (PAT) for Bearer authentication. Create one before integrating a caller:
  1. Sign in to the Qoder Console and open the avatar or user menu.
  2. Go to Personal SettingsService Integration.
  3. Create a personal access token. Use a name that identifies the caller and environment, such as ticketing-production.
  4. Copy the token immediately. It is normally shown in full only once; store it in the caller's credential manager or CI secret store.
  5. Validate the integration in a test environment, then create a separate production token. During rotation, verify the new token before revoking the old one.
A PAT represents the current account's calling identity. Never put a real token in a repository, autonomous-task description, screenshot, shell history, or application log. Revoke and recreate it immediately if exposed.

Create the task and obtain its endpoint

  1. Create an autonomous task and add an API trigger.
  2. Select a Waker or WakerFlow, then configure the task description, workspace, and run limits.
  3. Save the task. From task details, copy the generated POST endpoint, authentication method, and request example.
  4. Protect the full endpoint like a credential. Do not construct it manually or include it in public logs or screenshots.
The endpoint contains the identifier for the current API trigger. Removing, recreating, or regenerating that trigger can invalidate an old endpoint. After editing trigger configuration, copy the latest endpoint again from task details.

Design the task description and payload

The task description defines the stable instructions, while the request body supplies data for one invocation. For example:
Process ticket {{ticket.id}}.
Severity: {{ticket.severity}}
Issue: {{ticket.summary}}
Output: provide the cause, recommended action, and risks that need human approval.
Send the corresponding JSON payload:
curl -X POST 'https://api.qoder.cn/v1/qoderwake/automation/invoke/<GENERATED_INVOKE_KEY>' \
  --header 'Authorization: Bearer <YOUR_PAT>' \
  --header 'Content-Type: application/json' \
  --data '{
    "wakeSessionUniqueId": "ticket-1001",
    "ticket": {
      "id": "1001",
      "severity": "high",
      "summary": "Payment callbacks keep timing out"
    }
  }'
Use the complete POST endpoint generated in task details. Payload substitution follows these rules:
  • Use {{field}} for a top-level field, {{ticket.id}} for a nested field, and {{items[0].name}} for an array element.
  • Field names are case-sensitive. If a path cannot be resolved, the placeholder remains in the task description so the mismatch is visible.
  • Strings are inserted directly. Objects, arrays, numbers, booleans, and null are converted to JSON text.
  • If the task description has no placeholders, the fixed description remains and the complete request body is appended as input for that run.

One-off requests and continued sessions

By default, every API invocation starts a new task session. To continue work on the same ticket, alert, or business object, send the same top-level string field wakeSessionUniqueId in subsequent requests:
  • Requests from the same user, autonomous task, and wakeSessionUniqueId reuse one session and run in order.
  • Omitting the field or changing its value starts a new session.
  • This field preserves context; it is not an idempotency key. The caller must still implement retry and deduplication behavior.
  • Use distinct values across customers, projects, data permissions, and security scopes to prevent context from crossing boundaries.

Verify the result

  1. Make the first request with a small, non-sensitive payload.
  2. Check the HTTP response. An accepted request only means execution has been dispatched; it does not mean the business task has completed.
  3. In Autonomous Work run history, verify that the trigger source is API and inspect the input, executor, workspace, and current status.
  4. Wait for completion, then inspect the final response, generated files, and actual result in the external system.
  5. After validation, configure the protected endpoint and PAT in the production caller.

Troubleshoot API triggers

SymptomWhat to check
HTTP 401 or 403Confirm that the PAT is valid for the current account and region, and that the header is Authorization: Bearer <YOUR_PAT>
Invalid endpoint or HTTP 404Copy the full endpoint again from task details; confirm that the task or API trigger was not deleted or recreated
Request accepted but no expected resultInspect run history; verify task status, Waker/WakerFlow availability, and any local device or directory dependency
Placeholder was not replacedCompare JSON nesting, field-name case, and array indexes with the task description
Wrong context was reusedCheck whether one wakeSessionUniqueId was shared by unrelated business objects
A retry caused duplicate executionAdd caller-side deduplication; do not treat wakeSessionUniqueId as an idempotency key
If an endpoint is exposed, remove and add the API trigger again to obtain a new endpoint. If the PAT is also exposed, revoke and recreate it.

Run a WakerFlow

When Run WakerFlow is selected, the page shows the workflow stages and runtime parameters.
  1. Select a WakerFlow that has already passed a manual run.
  2. Review phases and human confirmation nodes.
  3. Configure an override method and value for every runtime parameter.
  4. Verify required fields and output compatibility.
If a workflow input changes, reopen every autonomous task that uses the workflow. Existing mappings do not automatically become correct.

Configure the workspace

WorkspaceUseRequirement
DefaultWork without fixed filesDo not assume a local repository
Local directoryFiles on a specific machineDevice online and directory permission valid
ProjectA maintained repository or documentation setCorrect visibility, branch, and write scope
Automation has no operator to correct a mistaken path in real time. For code changes, document branch strategy, tests, output location, and prohibited deployment actions.

Advanced settings

  • Maximum runs: unlimited or a custom number. The task pauses when the limit is reached.
  • End date: never or a specified date. No new trigger starts after that date.
Use both for temporary migrations, campaigns, and release-specific work. Check that limits do not stop work mid-cycle or leave a temporary task running indefinitely.

Test before rollout

  1. Use Run now to validate the executor, task description, workspace, and capabilities.
  2. Test the actual trigger with a near-term schedule, safe event, or API request.
  3. Inspect trigger source, input, current step, final result, and artifact.
  4. Confirm that high-risk actions still pause for approval.
  5. Remove test data, then enable the production trigger.
If manual execution succeeds but automatic execution fails, focus on trigger configuration. If manual execution also fails, focus on the Waker/WakerFlow, workspace, permissions, Skills, and connectors.

Inspect run records

Check the trigger source and time, input, executor, workspace, process status, final result, and actual artifact. Begin troubleshooting at the first error rather than the final summary.

Edit, pause, copy, and delete

  • The response method and selected Waker or WakerFlow are locked when editing an existing task. To change the executor, use Copy, validate the new task, then pause or delete the old task.
  • Retest after changing triggers, model, workspace, permissions, or connectors.
  • Copying does not copy the accumulated run count or run history. After copying, verify the name, trigger scope, project, model, and token so two tasks do not process the same event.
  • Pausing prevents new automatic triggers but does not stop a run already in progress.
  • Not every event-triggered task supports Run now; use a safe event from its external source for validation.
  • Before deletion, preserve required run records and stop external systems from calling the endpoint.

Common issues

SymptomCheck order
Schedule did not runStatus → next run/timezone → limits → device/workspace
Event did not runSource authorization → object → event type → activity
API authentication or payload errorCurrent endpoint → PAT → Content-Type → JSON fields
Run fails immediatelyWaker/WakerFlow → workspace → model → Skill/connector
Workflow parameter is emptyWorkflow input → override method → trigger field
Completed but artifact is wrongRun details → description → output location → actual object