Overview
Wrap any content in<private> tags to prevent it from being stored in the database or synced upstream.
<private> tags and everything between them are stripped at the hook layer before any data reaches the worker or SQLite database. VibeLearn never stores or syncs the private content.
How It Works
Stripping happens insrc/utils/tag-stripping.ts, called from the UserPromptSubmit hook:
Use Cases
API keys and credentialsWhat Is Still Stored
Content outside<private> tags is captured normally:
- File paths you edited (basename only in upstream sync)
- File content from Write/Edit tools (up to 10KB per file)
- Bash command text and output
Best Practices
- Use
<private>for API keys, passwords, personal data, and internal business logic - The tag content is completely removed — the sanitized prompt still makes sense to the AI
- Tags work in any prompt position: beginning, middle, or end
- Nested tags are not supported — one level only

