Data directory
Override with CRYSTAL_HOME or --home.
~/.crystal/ binaries/code/CrystalCode (CrystalCode.exe on Windows) config.json providers.json credentials.json permissions.json trusted.json access.json instructions.md AGENTS.md prompts/ work.md plan.md review.md review.user.md topic.md compaction.system.md compaction.user.md image.system.md image.user.md promptsets/ concise/ prompt.json work.md plan.md review.md review.user.md topic.md compaction.system.md compaction.user.md image.system.md image.user.md prompt-attachments/ <name>/ prompt.json work.md plan.md review.md skill/<name>/SKILL.md skills/<name>/SKILL.md tools/<directory>/tools.json data/tools/<directory>/ plugins/<directory>/plugin.json data/plugins/<directory>/ sessions/<id>.json logs/Project overlay (named prompts, prompt attachments, Crystal skills, tool sets, and plugins of the same directory name win over home):
<workspace>/.crystal/ instructions.md prompts/ work.md plan.md review.md review.user.md topic.md compaction.system.md compaction.user.md image.system.md image.user.md prompt-attachments/ <name>/ prompt.json work.md plan.md review.md skill/<name>/SKILL.md skills/<name>/SKILL.md tools/<directory>/tools.json plugins/<directory>/plugin.json data/tools/<directory>/ data/plugins/<directory>/<workspace>/.crystal.md<workspace>/AGENTS.mdconfig.json is not part of the project overlay. Workspace-level configuration is deferred.
access.json stores default extra directories for each canonical workspace root.
| Event | What happens to the defaults |
|---|---|
New session, /clear, /fork, successful /cd or /space |
Copies the defaults into the session |
/resume |
Keeps the saved rules. Does not add defaults back |
Any --allow-read or --allow-write |
Replaces the defaults for this process. Not saved |
A missing directory or a credential path is skipped with an error and left in the file. A corrupt file, or two modes for one directory, seeds nothing. The session still opens.
Plugins and tool sets keep runtime data under data/, split by kind.
| Root | Path |
|---|---|
| Global | ~/.crystal/data/{plugins|tools}/<directory>, shared across workspaces |
| Project | <workspace>/.crystal/data/{plugins|tools}/<directory> |
The host creates both the first time the extension receives them, at plugin attach or before a tool call. They are separate from the install trees and are not a secret store.
plugins/<directory>/plugin.json loads one operator plugin. Dotnet tool sets still load class libraries from the tool-set directory only. See Plugins.