## TL;DR
Give the agent a retry ledger: every dbt test retry must record the test, the failure output, and the change made since the last attempt, and the loop must terminate after a small fixed number of attempts per test with a failure summary. An agent retrying a deterministic test failure without changing the model or the data is not debugging; it is waiting for a different result that cannot come.

```text
agent loop detected: agent retrying failed dbt test in infinite loop error
```

## Use this when
- The check or run fails with this symptom: the agent cycles endlessly on the same failed dbt test.
- You are working on an agent retrying a failed dbt test in an infinite loop and the failure repeats on the same data or configuration.
- You need the failing rows, rule, or stage isolated before changing thresholds or code.

## Not for this skill when
- A retry that follows a genuine model or data fix, which is correct verification behaviour instead.
- The error text names a different tool, stage, or root cause. Match the verbatim error first and use that skill.

## Steps
1. Extract the agent's attempt history for the test and verify the failure output is identical across attempts. Verify: identical attempts are documented
2. Add an attempt ledger keyed by test name and input state, recording the change made before each retry. Verify: the ledger exists and is written per attempt
3. Enforce a hard attempt cap per test, after which the agent writes a failure summary and stops that branch of work. Verify: the cap is configured and tested
4. Require a change token, such as a model file hash or a data reload marker, to differ before a retry is permitted. Verify: retries without a changed token are blocked
5. Replay the original failure and confirm the agent stops at the cap with a usable summary instead of looping. Verify: the replay terminates with the summary produced

## Variant phrasings
### agent retrying failed dbt test infinite loop
The verbatim dbt-loop phrasing.
### dbt test retry ledger attempt cap agent
The ledger phrasing for recorded attempts and changes.
### agent loop deterministic test failure stop rule
The stop-rule phrasing for deterministic failures.

Compatibility: Agent retry handling around dbt test failures in CI-style loops

## Why it happens
dbt tests are deterministic for fixed data and models, so an unchanged retry has a certain outcome. Agents loop because their instructions reward completion and nothing in the loop represents attempts or state, the same structural gap behind most agent retry storms.

## Edge cases / pitfalls
- Transient warehouse errors deserve retries with backoff, keyed on the error type, not the test result.
- The failure summary should include the compiled test SQL so a human can reproduce in one step.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_CFaIZj6FSo6H02m91Ze0aw
