> ## Documentation Index
> Fetch the complete documentation index at: https://ctrlrun.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# DuplicateEffect

> This logical effect already happened, or is happening now (SPEC-v0.1 §5.4).

`ctrlrun.DuplicateEffect` — class, defined at `src/ctrlrun/errors.py:126`

```python theme={null}
from ctrlrun import DuplicateEffect
```

```python theme={null}
class DuplicateEffect(CTRLRunError)
    def __init__(message: str | None = None, *, state: str, effect_key: str | None = None)
```

This logical effect already happened, or is happening now (SPEC-v0.1 §5.4).

`state` is `committed` — the effect is done — or `in_progress`, meaning another attempt
holds a live reservation on the key. Neither permits a second execution.

## Next

* [Python API index](/docs/reference/api/index).
* [Get started](/docs/get-started/quickstart) · [Why](/docs/why).


## Related topics

- [Errors](/docs/reference/errors.md)
- [Three ways in](/docs/get-started/three-ways-in.md)
- [OpenAI Agents SDK tool approval](/docs/cookbook/openai-agents-tool-approval.md)
- [Use the OpenAI Agents SDK adapter](/docs/guides/openai-agents-adapter.md)
- [Use the LangGraph adapter](/docs/guides/langgraph-adapter.md)
