How the i-have-adhd Plugin Handles User Data Privacy

The i-have-adhd plugin maintains strict user data privacy by keeping all information local and ephemeral, storing only a boolean session flag in memory while never transmitting data externally or writing user content to disk.

The ayghri/i-have-adhd repository provides a privacy-first Claude Code extension designed to modify AI output formatting for ADHD accessibility. Unlike many cloud-connected tools, this plugin deliberately avoids network requests and persistent storage, ensuring that no personal conversation data leaves the host environment or survives beyond the current session.

Local-Only Architecture with No External Transmission

The plugin operates entirely within the host environment without making any outbound network requests. All logic executes locally inside Claude Code or compatible hosts (such as Pi), reading exclusively from bundled static resources.

According to the source code in extensions/i-have-adhd.ts (lines 46-64), the plugin only accesses two local files:

  • SKILL.md – The local skill definition containing formatting rules
  • .i-have-adhd-always – An optional flag file indicating default-on behavior

Neither file contains user-generated content, and both are static resources distributed with the plugin package.

Session-Scoped State Management

When users toggle ADHD-friendly output, the plugin stores the activation state using a transient session entry rather than persistent storage. The implementation uses:

pi.appendEntry(STATE_ENTRY_TYPE, { enabled } satisfies AdhdModeState);

This entry lives exclusively in the session manager, an in-memory structure that exists only for the duration of the current conversation. As defined in extensions/i-have-adhd.ts (lines 55-60), the stored data shape is strictly limited to { enabled: boolean }, containing no personally identifiable information, conversation history, or user metadata.

Automatic Cleanup and Rule Removal

The plugin implements immediate cleanup when users disable the feature via stop phrases ("stop adhd mode" or "normal mode"). Upon deactivation, the extension removes injected formatting rules from the conversation context, ensuring no stale rule text persists in the model's prompt window.

This logic appears in extensions/i-have-adhd.ts (lines 90-106), where the handler strips previous rule injections before the next model interaction, preventing residual data from accumulating in the session history.

Zero Logging of User Content

All user interface interactions remain transient and local. The plugin utilizes ctx.ui.setStatus and ctx.ui.notify calls (lines 9-13 of the main extension file) to display status indicators like "● ADHD ON" in the local UI. These notifications appear only in the current client window and are not written to log files, analytics systems, or external monitoring services.

Optional Always-On Flag as Local Marker

Users may create a file named .i-have-adhd-always in the workspace to enable ADHD mode by default. This file serves as a simple existence marker rather than a configuration file containing data. As implemented in extensions/i-have-adhd.ts (lines 98-103), the plugin merely checks for file presence (fs.existsSync) to set a boolean flag, without reading or parsing file contents.

Summary

  • No Network Activity: The plugin processes all logic locally without external API calls or telemetry transmission.
  • Memory-Only State: User preferences exist solely as ephemeral session entries ({ enabled: boolean }) that vanish when the conversation ends.
  • Automatic Sanitization: Disabling the feature immediately purges rule injections from the active context.
  • Zero Data Retention: UI notifications and status updates display locally without persistence.
  • Marker-Based Config: The optional always-on flag relies on file existence checks rather than stored configuration data.

Frequently Asked Questions

Does the i-have-adhd plugin send my conversation data to external servers?

No. The plugin contains no network request logic. It operates entirely within Claude Code's local extension environment, reading only static rule files packaged with the repository. All processing stays on your machine, and no conversation content transmits to third-party services.

What user data does the plugin store when I enable ADHD mode?

The plugin stores exactly one piece of information: a boolean value indicating whether ADHD mode is enabled. This single flag ({ enabled: true } or { enabled: false }) lives in the session manager's memory and disappears when you close the conversation. The plugin does not capture usernames, conversation history, file contents, or workspace metadata.

Can I verify that the plugin has removed its rules after I disable it?

Yes. When you issue a stop phrase or toggle the mode off, the plugin executes cleanup logic in extensions/i-have-adhd.ts (lines 90-106) that removes rule injections from the active context. You can verify this by noting the disappearance of the green "● ADHD ON" status indicator and observing that subsequent AI responses return to standard formatting without the structured headings and bullet points characteristic of ADHD mode.

Is the .i-have-adhd-always file safe to commit to version control?

The .i-have-adhd-always file contains no personal data—it functions purely as an existence marker. However, since it controls workspace-wide behavior preferences, you may want to add it to .gitignore to prevent enforcing your personal UI preferences on collaborators. The plugin detects the file's presence with a simple fs.existsSync check and does not read its contents.

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 →