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

> Discover how the i-have-adhd plugin protects your privacy. Learn about its local, ephemeral data handling, ensuring your information stays secure and never leaves your device.

- Repository: [Ayoub Ghriss/i-have-adhd](https://github.com/ayghri/i-have-adhd)
- Tags: privacy-policy
- Published: 2026-08-24

---

**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`](https://github.com/ayghri/i-have-adhd/blob/main/extensions/i-have-adhd.ts) (lines 46-64), the plugin only accesses two local files:
- **[`SKILL.md`](https://github.com/ayghri/i-have-adhd/blob/main/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:

```typescript
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`](https://github.com/ayghri/i-have-adhd/blob/main/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`](https://github.com/ayghri/i-have-adhd/blob/main/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`](https://github.com/ayghri/i-have-adhd/blob/main/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`](https://github.com/ayghri/i-have-adhd/blob/main/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.