If you discover a security vulnerability in Monogram, please report it privately so we can fix it before public disclosure.
How to report:
- GitHub Security Advisory (preferred): https://github.com/HarimxChoi/monogram/security/advisories/new
- Email:
security@monogram.example(you can encrypt with the PGP key indocs/security-pgp.txtif the issue is sensitive)
Please include:
- A description of the vulnerability
- Steps to reproduce (proof-of-concept if possible)
- Impact assessment (what an attacker could do)
- Your preferred contact for follow-up
Please do not:
- Open a public GitHub issue for security reports
- Exploit the vulnerability against any instance you don't own
- Share the vulnerability publicly until a fix is released
This is a solo-maintainer project. Honest expectations:
| Severity | First acknowledgment | Fix target |
|---|---|---|
| Critical (credential leak, RCE, data loss) | 48 hours | 7 days |
| High (auth bypass, privilege escalation) | 5 days | 30 days |
| Medium/Low | 14 days | Best effort |
If you don't hear back within the acknowledgment window, please follow up — email filters fail sometimes.
Monogram handles sensitive data on three surfaces:
- Credential pipeline — drops classified as
credentialwrite tolife/credentials/and must NEVER leak to other paths (drops.md, MEMORY.md, brief, weekly report). Any leak is critical. As a backstop, the Writer passes every staged write except the credential file itself throughsecret_filter.redact()(src/monogram/secret_filter.py). - Prompt injection — classifier output is used to route writes.
Injection that bypasses the classifier to write a credential under a
benign
target_kindis critical — though thesecret_filterbackstop redacts well-known key shapes before any such write lands. - LLM data exfiltration — drops may contain private content. A path where the full drop is sent to an unintended third-party service (e.g., accidental public logging) is high.
Bugs that are not security issues (please file as normal issues):
- Extraction quality problems (e.g., PDF OCR fails)
- Latency regressions
- UX papercuts
- Documentation errors
In scope:
- The
mono-gramPython package as published on PyPI - Code in the
HarimxChoi/monogramrepository - The
HarimxChoi/monogramObsidian plugin (shipped from the same repo)
Out of scope:
- Issues in upstream dependencies (report to them directly)
- Issues in user-provided MCP servers or Claude Desktop configuration
- Issues in the user's own vault repository hosting
After a fix is released, we will credit reporters in the CHANGELOG unless they request anonymity. A CVE will be requested for any vulnerability rated High or Critical.
Only the latest minor version receives security fixes. Users on older versions should upgrade.
| Version | Status |
|---|---|
| 0.7.x | ✅ Supported |
| 0.6.x | |
| ≤ 0.5.x | ❌ Unsupported |
- PyPI publishing: Trusted Publishing (OIDC) + attestations via Sigstore. No long-lived API tokens.
- Dependency audit:
pip-auditin CI; Dependabot for weekly dependency updates. - Secret scanning:
gitleakspre-release audit. - Credential handling: hard-coded
life/credentials/exclusion from LLM context viasafe_read.pygate, plus a writer-levelsecret_filter.redact()backstop on every non-credential write. - Telegram session:
monogram_session.sessionis in.gitignoreand must never be committed.