# reserved_agent_dir_names

> **Function** in `deepagents_code`

📖 [View in docs](https://reference.langchain.com/python/deepagents-code/_reserved_names/reserved_agent_dir_names)

Return non-agent directory names reserved by the app under the profile root.

These directories are created by the app for its own use and must never
appear in the agent picker — even if they contain an `AGENTS.md` file
(e.g. after `dcode -a plugins` stamps the marker via memory setup):

- `bin/` holds the managed `rg` binary when the shared installation
  directory is unwritable (`managed_tools.FALLBACK_BIN_DIR`).
- `plugins/` holds installed plugin state (`_constants`, re-exported by
  `plugins.store`).
- `conversation_history/` holds offloaded per-thread archives (`offload`).

`agent/` is deliberately absent: `ProfilePaths.default_skills_dir` names it,
but nothing reads that field yet, so reserving it would block a legitimate
agent name for a directory the app does not actually create.

Each name is derived from the module that owns it. That keeps a single
source of truth instead of a copy here. `FALLBACK_BIN_DIR` is the bin
constant that lives under the profile root. The preferred `BIN_DIR` is
installation-scoped. Deriving from `BIN_DIR` would reserve a profile name
from an unrelated path.

`DEFAULT_PLUGIN_DIRNAME` comes from `_constants`, not `plugins.store`.
Importing `plugins.store` loads the `plugins` package `__init__`, which
pulls in pydantic through `plugins.models`. This function runs on the
startup path, so that import would cost every launch about 65 ms.

The result is cached since the reserved set is constant for the process.

## Signature

```python
reserved_agent_dir_names() -> frozenset[str]
```

## Returns

`frozenset[str]`

The reserved directory names.

---

[View source on GitHub](https://github.com/langchain-ai/deepagents/blob/4bfa52000ef65ac623d8ada0cb67f67cbdd663ea/libs/code/deepagents_code/_reserved_names.py#L22)