ogentic-shield
Regulatory sensitivity detection for legal privilege, clinical PHI, and financial MNPI.
ogentic-shield classifies whether a piece of text — or a whole document —
contains content that shouldn't leave a regulated boundary. Attorney-client
privilege. HIPAA-protected clinical content. Material non-public financial
information. The long tail of PII. It returns a structured AnalysisResult
(score, category groups, detected entities, suggested routing) and can
redact masked tokens back into plaintext after a round-trip through an
external LLM.
Built for the legal, clinical, and financial AI workflows where the wrong default is "ship the prompt to OpenAI and hope."
Why this exists
On February 10, 2026, US v. Heppner (S.D.N.Y.) established that sending privileged content through a third-party AI tool can constitute waiver. The guardrail every regulated org now needs — classify before you call — didn't exist as an OSS primitive. Shield is that primitive.
Install
pip install ogentic-shield # core (Layer 1 + 2)
pip install 'ogentic-shield[llm]' # + Layer 3 (Ollama-backed disambiguation)
pip install 'ogentic-shield[mcp]' # + MCP server (Claude Desktop / Goose / Cursor)
pip install 'ogentic-shield[server]' # + FastAPI HTTP surface
pip install 'ogentic-shield[all]' # everything
Layer 1 + 2 require the spaCy
en_core_web_lgmodel:python -m spacy download en_core_web_lg
30-second example
from ogentic_shield import Shield
shield = Shield(profiles=["shield-legal"])
# Text-level analysis
result = shield.analyze(
"Privileged attorney-client memo: do not disclose to opposing counsel."
)
print(result.score) # 0..100 sensitivity score
print(result.category_groups_found) # {CategoryGroup.PRIVILEGE}
print(result.routing_suggestion) # "local_only"
# Document-level redaction (v0.4.0+)
redacted = shield.redact_document("memo.txt")
print(redacted.redacted_text) # entities replaced with deterministic tokens
print(redacted.mapping.tokens) # token -> original, for round-trip after LLM
The full API — profiles, layers, calibration, redaction, async, MCP, HTTP server, document analysis — is documented on GitHub. See the README on GitHub for the complete reference.
What's in the box
- Three-layer detection — fast regex (Layer 1) → spaCy NER (Layer 2) → optional local-LLM disambiguation (Layer 3). Each layer adds precision without surrendering recall.
- Profile-driven —
shield-legal,shield-finance,shield-healthcare, custom. Profiles define which categories to flag and at what threshold. - Documents API —
Shield.analyze_document()andShield.redact_document()handle.txt/.md/.logtoday; PDF / DOCX / XLSX / EML / MSG / HTML on the roadmap. - Token-preserving redaction —
Shield.redact()and the newShield.redact_document()substitute entities with deterministic[Label_abc123]tokens. Pair withunredact_text()to restore originals after a round-trip through OpenAI / Anthropic / Ollama. - MCP server —
ogentic-shield --mcpexposes Shield as an MCP tool surface (shield.analyze,shield.profiles,shield.calibration). Claude Desktop, Goose, and Cursor all work out of the box. - Privacy-first — runs entirely in-process. No telemetry, no Ogentic-hosted infra. The audit row Shield emits is shape-only (hashes, scores, category names) — never the prompt text itself.
Part of a stack
ogentic-shield is the classification leg of the OgenticAI privacy-routing
stack:
ogentic-shield → ogentic-router → ogentic-audit
(classify) (route) (forensic log)
Together they form the open-source foundation for Sotto, OgenticAI's commercial product for regulated professionals.
Links
- Full README + API reference: https://github.com/OgenticAI/ogentic-shield#readme
- Issues / discussion: https://github.com/OgenticAI/ogentic-shield/issues
- Release notes: https://github.com/OgenticAI/ogentic-shield/releases
- Apache 2.0 license: https://github.com/OgenticAI/ogentic-shield/blob/main/LICENSE
Release files for ogentic-shield 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ogentic_shield-0.6.0.tar.gz | 330.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ogentic_shield-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 423.6 kB
Release files / ogentic_shield-0.6.0.tar.gz
| Download URL | ogentic_shield-0.6.0.tar.gz |
|---|---|
| Size | 330.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2de590eb42a87f9ff6ba101c6891b05170a7937b30b9db6d3b1448edb03d7d73
|
|
BLAKE2b-256 checksum How to use checksums |
e45502a9fb4112cad6cff720a57b60faa5bfbca0e0a9ff0b3f1107a49fa5a4d8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Release files / ogentic_shield-0.6.0-py3-none-any.whl
| Download URL | ogentic_shield-0.6.0-py3-none-any.whl |
|---|---|
| Size | 93.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
278f2fbe4662d881fa79f9d747bb566fd101f16388372528eb15464c1f609195
|
|
BLAKE2b-256 checksum How to use checksums |
4d6a76049b7cb7738549171f7afb396fab2f4b9e570b4119b8035cdbcf19e2b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|