{
  "id": 9220839,
  "title": "llm-guard is archived. I built a deterministic replacement.",
  "url": "https://urgent.news/2026/09/22/llm-guard-is-archived-i-built-a-deterministic-replacement",
  "topic": "ai",
  "section": "AI",
  "published": "2026-09-22T22:27:10.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/anusha_mukka/llm-guard-is-archived-i-built-a-deterministic-replacement-4klf"
  },
  "original_language": "en",
  "account": "llm-guard has been archived, but the developer has created a deterministic replacement. The new system scans both user input and model output for various security threats. Scanners are applied with per-scanner thresholds using the llm_sentinel library. The library includes scanners for prompt injection, secrets, PII, toxicity, gibberish, ban topics, code execution, URL allowlist, token limit, and custom regex patterns. Each scanner provides findings with the scanner name, a score, and matched spans, ensuring transparency. The library offers adapters for FastAPI and LangChain to integrate the scanning functionality. The developer emphasizes the importance of scanning both input and output, particularly code execution output, to protect against malicious tool usage. The included benchmarks show high precision and recall on labeled data, but note that the corpora are small and hand-written. Real-world attacks may be more creative than the examples provided. The developer advises users to start with scanners that have no judgment calls, run in collect-all mode before blocking, and treat the benchmarks as a starting point rather than a definitive verdict.",
  "summary": "safe = vault.scan(text, redact=True).redacted_text Scan model output too , not just user input . The threat model changed the day agents started executing tool output . Untrusted text does not only come from users anymore : python result = vault.scan(model_output) Compose your own policy with per-scanner thresholds: python from llm_sentinel import Vault, SecretsScanner, PIIScanner,…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}