[BUG] Claude Code runtime silently deletes .kiro/ directory
Description
Claude Code runtime silently and repeatedly deletes the .kiro/ directory from the project working tree. This happens automatically between tool calls, without any user action or hook triggering the deletion.
Environment
- Claude Code version: Latest (March 2026)
- OS: Windows 11 Pro 10.0.26200
- Shell: Git Bash
- Platform: Desktop app
Reproduction Steps
- Create a
.kiro/directory in a project:mkdir -p .kiro/sessions - Write files to it:
echo "test" > .kiro/sessions/test.txt - Use Write/Edit tool on any
.kiro/file - Run any Bash command in the next tool call
.kiro/directory is completely gone from disk
Evidence from systematic testing
| Test | Result |
|------|--------|
| .kiro/ with Write/Edit tool + commit | DELETED |
| .kiro/ with Bash-only writes + commit | Sometimes survives, sometimes deleted |
| .kiro/ added to .gitignore + untracked | STILL DELETED |
| .sd/ (renamed from .kiro/) same operations | SURVIVES |
| .test-persist/ same operations | SURVIVES |
Key finding: .kiro/ is deleted even when it is in .gitignore and has zero git-tracked files. Only the directory name .kiro triggers the deletion. Renaming to .sd/ or any other name completely resolves the issue.
Investigation Details
We spent extensive time investigating, initially suspecting:
- PostToolUse hooks (tested all 7 individually with session restarts — all PASS)
settings.jsonbeing git-tracked (contributed but was not root cause)git checkout HEADin watchdog hook (was a secondary issue, fixed)
The definitive test was:
.kiro/ → deleted (even gitignored, even untracked)
.sd/ → never deleted
.test-persist/ → never deleted
Suspected Cause
The Claude Code runtime appears to treat .kiro/ as a managed directory (possibly related to Kiro IDE compatibility) and actively removes or resets it between tool invocations.
Impact
- Any project using
.kiro/for configuration, sessions, or data will lose files - This is a silent data loss — no warning, no error message, no log entry
- Workaround: rename
.kiro/to something else
Related Issues
- #34330 (
.kiro/directory handling) - #10011 (working tree refresh)
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗