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

The most common cause is a persistent flag file that fails to delete, causing the 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
  3. While the flag exists, the hook prepends "ADHD MODE ACTIVE" and injects rules from skills/i-have-adhd/SKILL.md into every response

According to 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 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 stops injecting rules

The hook's help text at 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 hook checks for a flag file at a configurable path (typically under ~/.config/claude/). Check if it persists after your shutdown attempt:


# 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 and verify the removal command:


# 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:


# 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


# 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


# 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:

normal mode

This is documented in 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 Skill definition Lines 3, 21 — persistence behavior and shutdown triggers
hooks/always-on.sh Persistent hook Line 29 — help text; flag file monitoring and removal logic
README.md Usage documentation /i-have-adhd activation command
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 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 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, so any interruption by another handler prevents proper shutdown.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →