Getting started

Descant autonomously works scoped GitHub issues through implementation, pull request review, approval, and merge. This guide explains how to connect a repository, choose which issues Descant can work, set their priority, control its authority, and manage usage.

What Descant is

Descant is an autonomous software engineering system that works through GitHub.

For each eligible issue, Descant reads the repository and project context, plans the work, implements the change on a branch, reviews the implementation, and opens a pull request.

A separate Descant reviewer then reviews the open pull request through its own GitHub identity. The author responds to the findings and updates the pull request until the change is approved. Once approved, Descant can merge automatically or wait for a person, depending on your repository settings.

Issues, branches, pull requests, reviews, checks, and branch protections remain in GitHub.

Descant also carries useful context forward. It records durable knowledge about the codebase and important decisions, files separate issues for valuable work discovered outside the current scope, and keeps the backlog around its work current. It also looks for opportunities to improve its effectiveness and reduce unnecessary usage over time.

Customer repositories are used to perform the requested work. They are not used as training data for the product.

The work loop

  1. Select the next eligible issue from the backlog.
  2. Plan the work using the issue, repository, surrounding code, project instructions, and relevant history.
  3. Build the change on a branch.
  4. Review and refine the implementation before opening a pull request.
  5. Open the pull request.
  6. Review the pull request through a separate Descant reviewer.
  7. Resolve findings and update the pull request.
  8. Approve and merge automatically if enabled or after human approval.
  9. Learn from the completed work and update the surrounding project context.

Review and resolution may repeat several times before approval.

Connect a repository

Repository setup is completed from the Descant dashboard.

  1. Create your account. Sign in to Descant. An organization and tenant are created for you.
  2. Connect GitHub. Install the Descant GitHub App on the repository you want Descant to work in.
  3. Install the reviewer. Install the separate Descant review app on the same repository. It uses its own GitHub identity for pull request review.
  4. Validate the connection. Run the setup validation from the dashboard. This confirms that Descant and its reviewer can both access the repository.
  5. Add credits. New tenants begin with a zero balance. Add credits before starting your first run. See Credits, pricing, and tiers.
  6. Start your first issue. Add the eligibility label and a priority label to an open, unassigned issue. Descant will claim it when a run slot becomes available. You can also start a specific issue directly from the dashboard.

Issue eligibility and priority

Descant only selects issues that you explicitly make eligible.

Eligibility label

The eligibility label is the opt-in switch for automatic work. The default label is for-descant. You can change it in the repository settings.

An issue without the configured eligibility label will not be selected automatically. You can still start a specific issue from the dashboard.

Priority labels

Priority labels order the backlog; they are optional, never required:

  • P0 — highest priority
  • P1
  • P2
  • P3 — lowest priority

Under the default ordering, an issue with the eligibility label but no priority label is still selected — after every priority-labeled issue, as the final tier. Custom ordering queries replace the default walk entirely, so include your own catch-all row if unprioritized issues should stay selectable.

Descant completes the highest available priority tier before moving to the next, finishing with eligible issues that carry no priority label. Within a tier, it selects the oldest eligible issue by default. The tie-breaker can be changed in the repository settings.

Selection rules

The backlog picker selects issues that are:

  • open
  • unassigned
  • carrying the configured eligibility label

Assigning an issue to someone removes it from automatic selection. This provides a simple way to reserve or pause work without changing its labels.

What Descant can do

Work eligible issues

Descant claims eligible issues according to the priorities and rules you configure. You can also start a run directly on a specific issue from the dashboard.

Keep changes focused

Descant keeps each pull request scoped to the issue it is working. When it discovers valuable work outside that scope, it files a separate issue rather than adding unrelated changes to the current pull request.

Review its implementation

Before opening a pull request, Descant reviews and refines the implementation.

Run a separate pull request review

After the pull request opens, a separate Descant reviewer evaluates the diff through its own GitHub identity. The author responds to the feedback and updates the pull request. Review and resolution continue until the pull request is approved or the run is stopped.

Follow your merge policy

Once approved, Descant can merge the pull request automatically if automatic merge is enabled. Otherwise, the approved pull request remains open for a person. Existing checks, branch protections, and repository rules still apply.

Close the assigned issue

When the completed pull request merges, Descant closes the issue it was assigned. For other existing issues that may have been resolved or superseded by the same change, Descant leaves a comment with the relevant pull request rather than closing them automatically. It does not close an issue it cannot confirm it created or was assigned.

Maintain follow-up work

Descant keeps the issues it creates organized. It identifies duplicates, reconciles stale follow-up work, and updates the backlog as the codebase changes.

Record durable project knowledge

Descant documents useful context about completed work, including important decisions, rationale, and information future runs should retain.

When a run captures durable memory, it is committed to the repository as a separate, reviewable pull request. Once merged, later runs can use it as project context.

Improve its operation

Descant uses high-level aggregate operational signals to identify opportunities to improve engineering effectiveness, reduce repeated investigation, and use model capacity more efficiently.

Customer code is not used as product training data.

Credits, pricing, and tiers

Descant is pay-per-use and funded with prepaid credits.

Credits

You purchase credits in advance. Usage is deducted as Descant performs the work.

Your current balance and available credit packs are shown in the dashboard.

Running out of credits

A run pauses when:

  • the tenant balance is exhausted, or
  • the monthly spend cap is reached

The run does not fail or restart from the beginning. Add credits or raise the spend cap, and the run resumes from its saved state.

Because usage is settled while work is running, a run may exceed the configured spend cap slightly before it pauses.

Monthly spend cap

Every tenant has a monthly spend cap. New tenants begin with a default cap. You can raise or remove it from the billing settings.

The cap applies to total spend across all runs during the billing period.

Model tiers

Each run uses a capability tier.

Soprano 1 — the standard and more cost-efficient tier.

Soprano 2 — a higher-capability tier intended for more difficult work. It costs more per run.

Every tier includes separate pull request review through the Descant reviewer.

Current prices are shown in the dashboard.

Troubleshooting and FAQ

I labeled an issue, but nothing happened. Confirm that the issue is open, is unassigned, and has the configured eligibility label (for-descant by default). Also confirm that your tenant has available credits and has not reached its monthly spend cap. Eligible issues are selected as run slots become available, so a higher-priority issue may be ahead of it — under the default ordering, an issue without a P0P3 priority label is selected last, after every priority-labeled issue.

A run paused before finishing. The tenant likely ran out of credits or reached its monthly spend cap. Add credits or raise the cap. The run will resume from its saved state.

The pull request is open but has not been approved. Opening the pull request begins the separate review stage. The Descant reviewer may leave feedback that the author still needs to resolve. Review and resolution repeat until the pull request is approved or the run is stopped. Check the pull request timeline and review status in GitHub.

The pull request is approved but has not merged. Check whether automatic merge is enabled in the repository’s Descant settings. When automatic merge is disabled, an approved pull request waits for a person. Branch protections, required checks, or repository rules may also prevent the merge.

Descant commented on an issue instead of closing it. Descant automatically closes the issue it was assigned after the associated pull request merges. When the same change appears to resolve or supersede another existing issue, Descant links the pull request in a comment and leaves the final close decision to the team.

Descant selected an issue I did not want it to work. Remove the eligibility label or assign the issue to someone. Either action removes it from automatic selection.

Can I start a specific issue without making it eligible for automatic selection? Yes. Start the issue directly from the Descant dashboard.

Does Descant use my code for training? No. The repository is used as context for completing the requested work. Customer code is not used as training data for the product.

Still stuck? Email [email protected].