Approve agent merges in your Inbox, auto-fix red builds, and turn issues into Tasks
An agent's pull request can now go the whole way: a red build or a review finding sends the agent back to fix it, and a green one waits for your approval in the Inbox before it merges. Issues from GitHub, Jira and Sentry can become Tasks, Goals can finish on a checklist, and your own fleet machines report cost, health and disk.
This release reached production on 6 September 2026 in two deploys. Release tagging was not running that week, so it has no version number and is listed by date.
Most of it finishes the path from a Task to merged code. When an agent's pull request goes red, or a trusted review bot leaves a finding, the agent is sent back to fix it under a small retry budget. When the pull request is green, the merge waits for a person to approve it in the Inbox. Issues and incidents from GitHub, Jira and Sentry can arrive as Tasks, and Goals gain a delivery kind that finishes on a checklist instead of a number.
If you run agents on your own machines, Fleet now reports what those runs cost, lets you cap daily spend and drain every machine at once, shows why a machine is not taking work, and copes with machines that sleep or run low on disk. Update the node app on each machine: older node builds cannot finish jobs after this release.
Some parts need a setting you choose or are only available through the API, and each entry says so.
On this page
Features
Improvements
- A red build or a review finding sends the agent back to fix its pull request
- Run Goal iterations in parallel and point template steps at other repos
- See why a fleet machine is not taking work, and hear when one goes offline
- Machines that sleep or run low on disk no longer waste agent runs
- Fleet runs get a repository's env files, and can run its own setup and checks
Features(4)
- New featureInbox & decisions
Approve an agent's merge from your Inbox
When an agent's pull request is open and its checks pass, Ever Works asks you before merging it. Nothing merges without a person's approval, and the approval only counts for the exact commit you saw.
Until now an agent could open a pull request but never land it. Now, once the pull request is open and its checks on GitHub pass, a Merge pull request approval appears in your Inbox.
- Approve it, and within about two minutes the platform re-checks the pull request against GitHub and merges it, pinned to the commit you approved.
- A new push needs a new approval. A force-push, a rebase or one more commit makes the earlier approval match nothing, and a fresh one is raised.
- Merges are decided one at a time. They are left out of Approve all, and an agent can never approve its own merge, even in autonomous mode.
Before you rely on it: agents only merge where your merge policy allows it, and agent merges are off by default. Turn them on in the Merge policy settings of a Work or an Organization. By default agents cannot merge into
main,master,developorstage, only squash merges are allowed, and an approval expires after 24 hours. This works with GitHub pull requests. - New featureIntegrations
GitHub issues, Jira issues and Sentry incidents can become Tasks
New issues and incidents arrive as triage Tasks in the Work they belong to, one Task per issue. Repeats add a comment instead of a duplicate, and an issue that comes back after its Task is done opens new work.
Issue and incident intake turns outside reports into work your agents can pick up.
- One Task per issue. The Task is titled with the issue key, labelled
triageand with its source, and gets a priority from the vendor's severity. A re-sent webhook, a new label or a repeated alert adds a comment to that same Task, so a noisy Sentry issue stays one Task with a readable history. - Regressions re-open work. If the vendor says an issue came back (reopened on GitHub, unresolved in Sentry, moved out of a done status in Jira) and its Task is already done, a new Regression Task is filed and linked to the old one.
- Triggers can match them. Task Triggers see these issue and incident events, so you can hand new issues straight to an Agent.
Setup: GitHub issues and Dependabot alerts come through the GitHub App or a repository webhook, and route to the Work that declares the repository. For Jira Cloud, set a webhook secret in the Jira connector, create a signed Jira webhook, and claim the project key in the Work's settings under Tracker teams. Sentry needs a platform-level integration secret and claiming the installation through the API, so today it is mainly for self-hosted installs.
- One Task per issue. The Task is titled with the issue key, labelled
- New featureTasks & goals
Delivery Goals finish on a checklist instead of a metric
A Goal no longer needs a number to chase. Choose Delivery when you create one, write its Definition of Done, and the Goal completes when every approved item is done or waived.
Some outcomes are not a number: "ship feature X across three repositories" or "migrate the docs site". A delivery Goal covers them.
- Open Goals and create a new Goal. Set Goal kind to Delivery, and the metric source and target fields disappear.
- Enter the Definition of Done, one criterion per line. At least one is required, and every line you enter starts approved.
- Activate the Goal. The execution loop hands iterations to agents as usual.
The Goal completes as achieved when every approved criterion is done or waived. Criteria an agent proposes do not count until you approve them, so an agent cannot finish a Goal by declaring it finished. A deadline still applies, and a passed deadline ends the Goal as missed.
A brand-new Goal also no longer stalls for want of an agent: if none is pinned and none has worked on it yet, it picks from the eligible agents in the Goal's own scope.
Limits: the kind is fixed once the Goal exists, and the checklist can be edited but never emptied. Existing Goals stay metric Goals.
- New featureFleet & nodes
See what runs on your own machines cost, cap daily spend, and drain them all
Runs on your fleet machines now record cost and token counts instead of $0.00. You can set a daily spending ceiling for the whole fleet or one machine, and drain every machine at once from Settings → Fleet.
Cost and tokens. When a run executes on one of your machines, Ever Works now records its token counts and, when the CLI prices the run, its cost, so budgets, Goal spend and cost views include it. The figure is the CLI's own estimate, billed to the account that machine's CLI is signed in to, never to platform credits. Codex reports tokens but no price.
Daily cost ceilings. On Settings → Fleet, set a Daily cost ceiling for the whole fleet, or open a machine's details to set one for that machine. Days are counted in UTC. Crossing a ceiling drains the affected machines and files one Inbox notice. Drained machines stay disabled until you re-enable them, so raise the ceiling first if the spend was expected. A machine ceiling on a CLI that reports no price drains that machine on its first finished run.
Panic controls. Drain all nodes disables every enrolled machine and returns their jobs to the queue without cancelling anything. Cancel in-flight work is a separate step that aborts running jobs and their agent runs, optionally including queued ones. A banner on the page tells you when the platform-wide stop is on; that stop is set by the platform operator.
Improvements(5)
- ImprovementTasks & goals
A red build or a review finding sends the agent back to fix its pull request
When CI fails on an agent's pull request, or a trusted review bot flags a problem, the run resumes with that feedback instead of waiting for someone to press Resume. Retries are capped at two per Task by default.
An agent's pull request used to stop at the first red build. Now Ever Works reads GitHub's own check results and resumes the run that opened the pull request, with the failing output attached to the Task.
- One retry per push, not per failing job. A whole matrix of red jobs on one commit counts as a single attempt.
- A small, fixed budget. By default a Task gets 2 automatic attempts for its whole life, shared between CI failures and review findings. Each attempt is a full agent run and costs about as much as the run that opened the pull request.
- It stops when it is not helping. If the same failure comes back unchanged, or the budget is spent, you get one Inbox notice instead of another run.
- Review findings count as feedback. Findings from a set of trusted AI code-review bots are now recorded on the Task with a severity, like change requests from people, so the resumed run fixes the serious ones first.
Setup: check results reach Ever Works when the GitHub App or a repository webhook sends check runs, check suites and workflow runs. Cancelled or skipped jobs, merged or closed pull requests, and finished or cancelled Tasks never trigger a retry.
- ImprovementTasks & goals
Run Goal iterations in parallel and point template steps at other repos
A Goal can now run up to 10 iterations at the same time when its work does not overlap. Each step of a workflow template can also name its own Work and repositories, so one template can span several codebases.
Concurrent iterations. A Goal still runs one iteration at a time by default. On the Goal page, open Adjust limits and set Concurrent iterations (1 to 10) to let the loop start several at once, each as its own Task and agent run. Every iteration passes the same checks as a single run, including budgets, credits and concurrency limits, so a higher number asks for more parallelism without adding capacity.
Raise it only for Goals whose iterations are independent. Nothing keeps their workspaces apart, so iterations editing the same repository on the same branch will overwrite each other.
Template steps across repositories. A step in a workflow template can now name its own Work and extra repositories, so one template can say "write the spec in the platform, update the docs site, publish the announcement". Create the Task tree as before from Tasks, new Task, From template. Each step's Work and repositories are checked against you when the template is saved and again when it is used, and a step you can no longer reach stops the whole tree instead of filing work in the wrong place.
Limits: creating and editing workflow templates is API-only for now.
- ImprovementFleet & nodes
See why a fleet machine is not taking work, and hear when one goes offline
Each machine now reports whether it is idle, working, paused, quarantined or throttled, and why. Your Inbox hears when a machine goes offline, and work is only routed to machines that can actually take it.
A machine that had stopped itself used to look online and idle while refusing every job. Now:
- Worker state in the machine's details. On Settings → Fleet, open a machine to see Idle, Working, Paused, Quarantined or Throttled, with the reason and since when. A machine that has never reported shows Unknown, not idle, and its job history shows each run's real outcome.
- Inbox notices. You get one notice when a machine goes offline, another if it stays offline (30 minutes by default), and one when it quarantines itself. Each resets when the machine recovers.
- Routing to machines that can take the job. Only machines that match the Agent's pinned machine and the capabilities the job needs count as free. If none can take it, your execution routing rule applies: by default the work runs in the cloud and you are told why, or, if you chose to wait for your own machines, it stays queued and starts once a matching machine is back online.
- No job waits forever. An agent job no machine picks up within 24 hours fails with a Fleet run never started notice.
Limit: offline notices are checked while a dashboard page is open or when work is dispatched, so with nothing open you see them on your next visit.
- ImprovementFleet & nodes
Machines that sleep or run low on disk no longer waste agent runs
A machine that wakes after its job was handed elsewhere now stops that run without pushing. Machines stop taking work below a free-disk floor and clean up old Task workspaces. Update the node app on every machine.
Sleep-safe runs. Desk machines sleep. Before, a sleeping machine's job could be handed to another machine while the first model run was still going, and one of the two runs on the same branch was wasted. Now the node notices when it wakes, stops any run whose claim lapsed while it slept, pushes nothing and reports the failure, and the job carries on elsewhere.
Disk floor. A machine refuses new work while its workspace volume has less than 2 GiB free, or when free space cannot be measured, and shows as Throttled. A job refused for disk goes back for another machine instead of failing. Change the floor with
--min-free-disk, or switch it off with--no-disk-floor.Workspace cleanup. With
--work, the node removes Task workspaces older than 14 days (--workspace-max-age) only when it can prove they are safe: not in use, no uncommitted changes, fully pushed, and the branch merged or gone.ever-works-node doctorshows what it would do, andever-works-node gc --dry-runpreviews a sweep. A machine's details show Disk & workspaces: above or below the floor, workspaces kept and the last cleanup.Action needed: update the node app on every machine. Node builds from before this release cannot keep or finish jobs.
- ImprovementFleet & nodes
Fleet runs get a repository's env files, and can run its own setup and checks
The .env files you store for a repository now reach runs on your own machines without their contents ever sitting in a job record. A repository can also declare setup and check commands that run only if you allow them.
Env files on your machines. Store a repository's
.envfiles under Settings → Repositories. When a run on one of your machines needs them, the node fetches them only while it holds that job, writes them readable by the owner only, keeps them out of Git, and deletes them before the run's first Git command and again when the run ends. The job records which files are needed, never their contents, and the values are scrubbed from what the node reports back. If a file can no longer be resolved, the run fails instead of starting with half an environment.Env grants (API only). You can also let runs read specific variables that are already set on the machine, by exact name. Agent-driven code can then read those values, so grant as few as possible.
Repository-declared setup and checks. A repository can list
tasks.setupandtasks.checkscommands in.works/works.yml, including checks for another repository mounted in the same Task. Setup runs before the agent, and a failed setup is reported as a setup problem, not as a failing test. Nothing runs unless each command exactly matches the Work's allow-list, which is set through the API for now.
Plus 7 fixes, which are not listed here.