# How to Fix "Stop ADHD Mode" Not Disabling the i-have-adhd Skill

> Fix the "stop adhd mode" command not disabling the i-have-adhd skill. Learn how to resolve persistent flag files and re-enable normal operation.

- Repository: [Ayoub Ghriss/i-have-adhd](https://github.com/ayghri/i-have-adhd)
- Tags: how-to-guide
- Published: 2026-08-05

---

**The most common cause is a persistent flag file that fails to delete, causing the [`always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/always-on.sh) hook to keep injecting skill rules even after you say "stop adhd mode."**

The **i-have-adhd** skill is a persistent output-shaping plugin for Claude that modifies responses until explicitly disabled. While the skill documentation states that "stop adhd mode" or "normal mode" should deactivate it, users sometimes find the skill remains active. This article explains why this happens and how to troubleshoot it based on the `ayghri/i-have-adhd` source code.

## How the Skill Activation and Deactivation Works

Understanding the mechanism helps diagnose failures. The skill uses a **flag-file pattern** rather than in-memory state, which makes it resilient but also prone to file-system-related issues.

### Skill Activation Flow

1. User invokes `/i-have-adhd` command
2. The skill creates a **flag file** watched by [`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh)
3. While the flag exists, the hook prepends "ADHD MODE ACTIVE" and injects rules from [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) into every response

According to [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) line 3, the skill "stays on until 'stop adhd mode'" — making persistence an intentional design feature.

### Intended Deactivation Flow

When the model detects either trigger phrase:

- **Primary**: "stop adhd mode"
- **Alternate**: "normal mode"

It should execute three actions per [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) line 21:

1. Send a one-line confirmation (e.g., "ADHD mode disabled.")
2. Return to default output style
3. **Remove the flag file** so [`always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/always-on.sh) stops injecting rules

The hook's help text at [`always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/always-on.sh) line 29 also documents this behavior for users.

## Why "Stop ADHD Mode" Fails: Common Causes

| Cause | Diagnostic Indicator | Fix |
|-------|---------------------|-----|
| **Flag file not deleted** | File still exists after command | Manual deletion or permissions fix |
| **Phrase mismatch** | Variations in case, punctuation, or spacing | Use exact lowercase phrase |
| **Cross-session persistence** | Skill reactivates after model reload | Full session restart |
| **Handler collision** | Another skill intercepts the command | Check for conflicting plugins |

## Step-by-Step Troubleshooting

### 1. Verify the Flag File Status

The [`always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/always-on.sh) hook checks for a flag file at a configurable path (typically under `~/.config/claude/`). Check if it persists after your shutdown attempt:

```bash

# Check if ADHD mode flag exists

cat "$HOME/.config/claude/adhd_mode.flag"

# Expected output when active: file exists (contents vary)

# Expected output when inactive: "No such file or directory"

```

If the file exists after saying "stop adhd mode," the deletion logic failed.

### 2. Inspect Hook Exit Logic

Open [`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh) and verify the removal command:

```bash

# Look for this pattern in always-on.sh

rm -f "$FLAG_PATH"

```

Ensure that:
- `$FLAG_PATH` resolves to the correct location
- The directory is writable by the process
- No error suppression hides deletion failures

### 3. Use Exact Trigger Phrasing

The skill performs **exact string matching** for deactivation. These variations will **not** work:

- "Stop ADHD mode" (capitalization)
- "stop adhd mode." (trailing period)
- "please stop adhd mode" (extra words)
- "/stop adhd mode" (command prefix)

Use precisely: `stop adhd mode`

### 4. Force State Reset

If file deletion fails, restart the entire chat session:

```bash

# Nuclear option: clear all Claude plugin state

rm -f "$HOME/.config/claude/adhd_mode.flag"

# Then restart your Claude client or chat session

```

## Working Code Examples

### Normal Operation

```text

# Activate

/i-have-adhd
→ ADHD MODE ACTIVE banner appears

# Deactivate (correct usage)

stop adhd mode
→ "ADHD mode disabled."
→ Banner disappears, normal formatting resumes

```

### Diagnostic Commands

```bash

# Locate and inspect the flag file

find ~/.config -name "*adhd*" -type f 2>/dev/null

# Manually remove if stuck

rm -f ~/.config/claude/adhd_mode.flag

# Verify hook is readable

cat /path/to/i-have-adhd/hooks/always-on.sh | grep -A2 "stop adhd mode"

```

### Alternative Deactivation Phrase

If "stop adhd mode" fails, try the alternate trigger:

```text
normal mode

```

This is documented in [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md) as an equivalent shutdown command and may bypass certain parsing issues.

## Source Code Reference

| File | Function | Relevant Content |
|------|----------|----------------|
| [`skills/i-have-adhd/SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/skills/i-have-adhd/SKILL.md) | Skill definition | Lines 3, 21 — persistence behavior and shutdown triggers |
| [`hooks/always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/hooks/always-on.sh) | Persistent hook | Line 29 — help text; flag file monitoring and removal logic |
| [`README.md`](https://github.com/ayghri/i-have-adhd/blob/main/README.md) | Usage documentation | `/i-have-adhd` activation command |
| [`INSTALL.md`](https://github.com/ayghri/i-have-adhd/blob/main/INSTALL.md) | Setup instructions | Flag file mechanism and path configuration |

## Summary

- **Root cause**: The "stop adhd mode" command must delete a persistent flag file; failure to do so leaves the hook active
- **Exact phrasing required**: Lowercase, no punctuation, no extra words
- **Fallback option**: "normal mode" works as an alternate trigger
- **Emergency fix**: Manually delete the flag file and restart the session
- **Code location**: Check [`always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/always-on.sh) for the actual `$FLAG_PATH` used in your installation

## Frequently Asked Questions

### Why does ADHD mode stay on after I say "stop adhd mode"?

The [`always-on.sh`](https://github.com/ayghri/i-have-adhd/blob/main/always-on.sh) hook continues running because the flag file wasn't deleted. This typically happens due to permissions issues, incorrect file paths, or the deactivation phrase not matching exactly. Check if `~/.config/claude/adhd_mode.flag` still exists after your command.

### Can I disable the skill mid-conversation without restarting?

Yes, if the file system is working correctly. Use the exact phrase `stop adhd mode` or `normal mode`. If that fails, manually remove the flag file with `rm -f ~/.config/claude/adhd_mode.flag` and the next response should return to normal formatting.

### Does capitalization matter for the shutdown command?

Yes. The skill matcher looks for exact lowercase strings. "Stop adhd mode" with capital S will not trigger deactivation. Use all lowercase: `stop adhd mode`.

### What if I have multiple skills with similar commands?

Command collision can occur if another plugin also responds to "normal mode" or similar phrases. Check your other installed skills for overlapping triggers. The i-have-adhd skill specifically looks for these exact phrases in [`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/SKILL.md), so any interruption by another handler prevents proper shutdown.