agent loop detected: agent kept repeating the same generate release notes step and failed with error
Fixes agent loop detected: agent kept repeating the same generate release notes step and failed with error in a mobile release pipeline by working through the specific checks and corrections for this failure. Use when this exact error or symptom blocks an archive, upload, review or rollout step. Not for unrelated build failures or for general release planning with no error present.
TL;DR
When an agent run to generate release notes hits this failure - kept repeating the same step and failed - do not retry the same step blindly. First check the real state in the release tooling to learn whether the step already took effect, then break the loop with a hard attempt budget, a state check before every retry, and a stop-and-report rule: before repeating the step, read the real store state and only repeat it if the desired end state is demonstrably absent, and never more than the budgeted times. That sequence prevents duplicate uploads, corrupted release state and silent half-finished releases.
agent loop detected: agent kept repeating the same generate release notes step and failed with errorUse this when
- An automated release run to generate release notes failed with this pattern.
- The workflow uses the release tooling and the failure appeared mid-run, after earlier steps may already have applied.
- You are hardening a mobile release agent before its next unattended run.
Not for this skill when
- A human running the same step manually in a terminal or console succeeds. That points at the underlying tool, not the agent wrapper.
- The store rejected the release on policy or metadata grounds. That is a store review issue, not an agent reliability failure.
Steps
- Stop the run and check the release tooling for how many times the step actually took effect, for example duplicate builds, releases or uploads created by the repetitions. Verify: the number of real side effects is counted from the store, not the log
- Clean up or clearly mark any duplicates the loop created, keeping the one correct artefact. Verify: only the intended artefact remains active
- Add an attempt counter in a state file outside the conversation, incremented before each try of this step, with a small maximum such as three. Verify: the counter exists and the workflow reads it before attempting the step
- Add a precondition check: before the step, read the store state and skip the step if the desired end state already exists. Verify: a test run with the end state present skips the step and logs why
- Add a stop rule: when the budget is exhausted, the agent stops and reports the last observed state and error instead of trying again. Verify: a forced-failure test ends with a report, not another attempt
- Re-run the workflow to generate release notes and watch the step execute at most the budgeted number of times. Verify: the run completes or stops cleanly within the budget
- Record the fix in the release runbook or the CI job notes, naming the error, the value or setting that changed, and the date, so the next release engineer does not re-diagnose it from scratch. Verify: the runbook or job notes contain an entry for this error that a teammate can find by searching the error text
Why it happens
Agents loop when a step returns an ambiguous result and the plan has no memory of attempts. Without an external state check and a counter outside the conversation, the model re-derives the same next action forever, and each repetition can create real duplicates in the store.
In practice this failure is rarely a one-off. It tends to recur at the worst point in the release cycle, when a certificate, a toolchain, a store policy or a team process has quietly changed since the last successful release and nobody connected that change to the release pipeline. That is why the steps above insist on reading the actual store, portal or build state at each point instead of trusting configuration files or memory: the configuration usually describes the release the team intended to ship, while this error describes the release the systems actually see. Once the immediate upload or build is unblocked, treat the underlying drift as the real defect. Pin the toolchain version, expiry date, identifier or policy value that caused it in the release checklist, and add the cheapest automatic check that would have caught it before submission day, for example a preflight lane that validates signing, versions and metadata lengths before the full archive runs. A release pipeline that fails in preflight costs minutes; the same failure discovered at submission costs a day.
Variants and edge cases
agent failed to generate release notes reliability playbook
The workflow-hardening phrasing: state checks, budgets and resumability for this step. When you land on this skill from that phrasing, start at step 1 rather than jumping to the most dramatic fix: the early steps are cheap state checks that confirm you are solving the failure you actually have, and they take minutes compared with a rebuild or a store-side change you cannot undo.
the release tooling agent workflow failure recovery
The recovery phrasing: establish real store state first, then resume without duplicating applied steps. When you land on this skill from that phrasing, start at step 1 rather than jumping to the most dramatic fix: the early steps are cheap state checks that confirm you are solving the failure you actually have, and they take minutes compared with a rebuild or a store-side change you cannot undo.
Edge case: partial application
The hardest variant of every agent failure is the half-applied release. Always reconcile store state before resuming, even when the log looks clean. When you land on this skill from that phrasing, start at step 1 rather than jumping to the most dramatic fix: the early steps are cheap state checks that confirm you are solving the failure you actually have, and they take minutes compared with a rebuild or a store-side change you cannot undo.
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_NhSE8Jti7cJPoypSYhVioQ