## TL;DR
Check existence by name before every create, and make the agent's setup idempotent: it looped because create was its only verb and each retry or poll created another copy. List experiments at startup, reuse the one that matches, and if creation is ever repeated, detect duplicates by name and converge on the oldest as canonical.

```text
agent loop detected: agent created the same experiment repeatedly and failed to check existence error
```

## Use this when
- The run or call fails with this symptom: agent loop detected: agent created the same experiment repeatedly and failed to check existence.
- You are working on an agent that ensures an experiment exists before logging runs and the failure repeats on the same run or configuration.
- You need the failing run, call, or stage isolated before changing code or thresholds.

## Not for this skill when
- A design that legitimately creates one experiment per dataset version, where the fix is a naming scheme that makes the intent explicit rather than existence checks.
- The error text names a different tool, stage, or root cause. Match the verbatim error first and use that skill.

## Steps
1. List the experiments the agent created and group them by name to size the duplication. Verify: the duplicate set is counted
2. Insert a get-by-name check before creation in the agent's setup path and use the returned experiment when present. Verify: setup becomes read-first
3. Converge the duplicates: move runs to the canonical experiment and archive the copies. Verify: one experiment per name remains
4. Run the agent's setup twice and confirm the second run creates nothing. Verify: idempotence is proven by repetition

## Variant phrasings
### agent created same experiment repeatedly loop existence check
The verbatim phrasing.
### agent loop duplicate experiments idempotent setup fix
The idempotence phrasing.
### tracking server full of duplicate experiments agent created
The pile-up phrasing.

Compatibility: Agent loops creating experiments on tracking servers

## Why it happens
Create-without-check is the default shape of generated setup code, and any loop or retry around it mints duplicates at machine speed. Tracking servers allow same-named or suffixed creations readily, so the pile grows until a human notices the experiment list.

## Edge cases / pitfalls
- Near-duplicate names with timestamps or suffixes are the same bug in a trench coat; group by normalised name.
- Cleanup needs care: runs may be spread across the copies, so converge runs before deleting any copy.

## Provenance

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