## TL;DR
Record the permanent failure and stop retrying it; alert instead. A rejection that never varies is a data problem, not a timing problem.

## Error
```text
(agent re-checked the same rejected assignment 30 runs in a row; identical Entra error each time; no progress)
```

## Steps
1. Confirm the rejection is deterministic: the same assignment, same error, every run. Expected: permanence established.
2. Read the Entra error detail to find the underlying cause (conflict, missing prerequisite, bad data). Expected: the real problem identified.
3. Fix the data or mark the assignment as permanently failed with the reason recorded. Expected: the loop broken by a decision.
4. Alert the owner; do not let the agent retry it again. Expected: human attention on the actual problem.

## When to use
- The agent re-checks an assignment that always fails the same way
- The error is deterministic across runs
- No run ever makes progress on it

## When not to use
- The failure varies (a transient problem; retry logic is fine)
- The assignment eventually succeeds (then it was transient)
- The check is cheap and idempotent (still better to record the outcome)

## Tool compatibility
Entra ID license assignment checks.

### Variant phrasings
### loop across scheduled runs
Persist the failure record between runs so the next run skips it.

### agent has no failure memory
Add one; without it every run repeats every failure.

## Why it happens
Agents retry because most failures are transient. Deterministic rejections need a different response (fix or escalate), but the agent cannot distinguish them without failure memory.

## Provenance

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