<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: saaro</title>
    <description>The latest articles on DEV Community by saaro (@saaro_net).</description>
    <link>https://dev.to/saaro_net</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1579561%2F830ef749-97ba-47e2-b016-44502ba8f198.png</url>
      <title>DEV Community: saaro</title>
      <link>https://dev.to/saaro_net</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/saaro_net"/>
    <language>en</language>
    <item>
      <title>Agentic RAG 2026: When the AI Decides How It Searches</title>
      <dc:creator>saaro</dc:creator>
      <pubDate>Sun, 13 Sep 2026 11:46:46 +0000</pubDate>
      <link>https://dev.to/saaro_net/agentic-rag-2026-when-the-ai-decides-how-it-searches-9ck</link>
      <guid>https://dev.to/saaro_net/agentic-rag-2026-when-the-ai-decides-how-it-searches-9ck</guid>
      <description>&lt;p&gt;In spring 2026, the world of Retrieval-Augmented Generation (RAG) is facing a fundamental change. While RAG in 2023 was still a simple pipeline – embed query, fetch top-K chunks, stuff into prompt, generate – the architecture has since split into three independent directions: Agentic RAG, Graph RAG, and Long-Context approaches. In particular, the approach called &lt;strong&gt;Agentic RAG&lt;/strong&gt; marks a qualitative leap: instead of a passive retrieval pipeline, an LLM-driven agent now controls the entire retrieval process – planning, iterating, self-correcting.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Pipeline to Agent Loop
&lt;/h2&gt;

&lt;p&gt;The core difference between classic and agentic RAG lies in the control logic. Traditional RAG is a linear function: one pass, one result. Agentic RAG, on the other hand, is a &lt;strong&gt;state machine&lt;/strong&gt; that works in loops. An agent receives a question, breaks it down into sub-questions, decides which sources to call (vector database, SQL, web search, MCP server), evaluates the results, and if quality is insufficient, starts a new pass – until the answer meets a confidence threshold or an iteration limit is reached (typically 5–6 passes).&lt;/p&gt;

&lt;p&gt;Production systems standardly use &lt;strong&gt;LangGraph&lt;/strong&gt; as the orchestration framework for this, supplemented by &lt;strong&gt;LlamaIndex&lt;/strong&gt; for the retrieval layer. LangGraph's checkpointing makes every step of the agentic loop traceable, pausable (for human approvals), and repeatable – an essential property for compliance and debugging.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Three Central Patterns: Self-RAG, CRAG, and Adaptive RAG
&lt;/h2&gt;

&lt;p&gt;Three dominant architectural patterns have emerged from research and practice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Self-RAG&lt;/strong&gt; (Asai et al., 2023) lets the model output special reflection tokens: Should it read at all? Are the retrieved passages relevant? Is the generated answer supported by the evidence? Is the answer useful? These self-critique loops significantly reduce hallucinations – ideal for regulated areas like legal, medical, or finance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Corrective RAG (CRAG)&lt;/strong&gt; (Yan et al., 2024) adds a separate retrieval evaluator that assesses the quality of the retrieved documents and, for weak evidence, takes alternative retrieval paths – such as a web search instead of the vector database. In production, CRAG is often combined with knowledge graph queries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adaptive RAG&lt;/strong&gt; places a query classifier before the pipeline, sorting each request by difficulty: Simple fact questions skip retrieval entirely, moderate ones get a single-hop vector search, and complex multi-step questions receive the full agentic loop. Since 60–70% of all production queries are simple, this approach saves significant costs without sacrificing quality on challenging questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 2026 Production Stack
&lt;/h2&gt;

&lt;p&gt;The standard stack for agentic RAG systems has largely solidified by 2026: &lt;strong&gt;Hybrid Search&lt;/strong&gt; (dense vectors + sparse BM25 keywords, fused via Reciprocal Rank Fusion) is the foundation – pure vector search is considered an architectural mistake. A &lt;strong&gt;Cross-Encoder Reranker&lt;/strong&gt; (Cohere Rerank 3.5, Voyage AI rerank-2.5) re-evaluates the relevance of each retrieved passage before passing to the LLM, yielding measurable precision gains. Additionally, &lt;strong&gt;Knowledge Graphs&lt;/strong&gt; (Neo4j, LazyGraphRAG) are used for relation-rich queries.&lt;/p&gt;

&lt;p&gt;Evaluation is no longer an optional step: &lt;strong&gt;Ragas&lt;/strong&gt; provides automated metrics (Faithfulness ≥ 0.9, Answer Relevancy ≥ 0.85, Context Precision ≥ 0.8), supplemented by observability tools like Arize Phoenix and Langfuse.&lt;/p&gt;

&lt;h2&gt;
  
  
  Costs and Latency: Realistic Expectations
&lt;/h2&gt;

&lt;p&gt;Agentic RAG is not a free upgrade. Token costs per query increase by a factor of &lt;strong&gt;3–10x&lt;/strong&gt; compared to simple RAG, and latency goes from 1–2 seconds to &lt;strong&gt;4–15 seconds&lt;/strong&gt; (p95). A team that routes expensive queries (e.g., "Compare clause 4.2 from the last five contracts") through a FAQ bot with simple fact questions wastes budget. Therefore, Adaptive RAG – the routing logic before the agent – is the de facto architectural decision for mixed workloads.&lt;/p&gt;

&lt;p&gt;At the same time, &lt;strong&gt;building&lt;/strong&gt; such systems has become more efficient: what cost two engineers six weeks in 2024, one engineer achieves in four weeks in 2025/26 – with higher runtime quality thanks to standardized patterns and a more mature tooling landscape.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In 2026, Agentic RAG is no longer an experimental gimmick, but a mature architecture for all cases where simple RAG reaches its limits. The decisive question is not "Should I use agentic RAG?" but rather "For which query class is the extra effort worthwhile?". Those who route their queries by complexity, use Self-RAG or CRAG for challenging cases, and evaluate with Ragas will fare better than with a one-size-fits-all architecture. RAG is not dead – it has been broken down into its components, and those who understand that build the cheaper and more accurate systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.bestaiweb.ai/agentic-rag-graphrag-and-the-long-context-threat-where-retrieval-augmented-generation-is-heading-in-2026/" rel="noopener noreferrer"&gt;Agentic RAG, GraphRAG, and the Long-Context Threat (Best AI Web, 2026)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jobsbyculture.com/blog/agentic-rag-guide-2026" rel="noopener noreferrer"&gt;Agentic RAG in 2026: Architecture Patterns, Frameworks &amp;amp; When to Use It (JobsByCulture, Mai 2026)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.marsdevs.com/guides/agentic-rag-2026-guide" rel="noopener noreferrer"&gt;Agentic RAG: The 2026 Production Guide (MarsDevs, Juni 2026)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.jbinternational.co.uk/article/view/4681" rel="noopener noreferrer"&gt;Agentic RAG in 2026: How Retrieval-Augmented Generation Has Moved Far Beyond Simple Pipelines (JBI Training, 2026)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>agenticrag</category>
      <category>rag</category>
      <category>ai</category>
      <category>llm</category>
    </item>
    <item>
      <title>localreview: Local AI Code Reviews with Claude Code – GDPR-compliant and Cloud-independent</title>
      <dc:creator>saaro</dc:creator>
      <pubDate>Sun, 13 Sep 2026 11:46:09 +0000</pubDate>
      <link>https://dev.to/saaro_net/localreview-local-ai-code-reviews-with-claude-code-gdpr-compliant-and-cloud-independent-3ie9</link>
      <guid>https://dev.to/saaro_net/localreview-local-ai-code-reviews-with-claude-code-gdpr-compliant-and-cloud-independent-3ie9</guid>
      <description>&lt;p&gt;Your code never leaves your machine – and yet you get a structured AI code review. With &lt;strong&gt;localreview&lt;/strong&gt;, you can get a second opinion on your diff in Claude Code based on a locally running model. No cloud provider, no data leak, no dependency on external APIs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why localreview?
&lt;/h2&gt;

&lt;p&gt;Claude Code is a powerful tool – but anyone reviewing sensitive codebases faces a dilemma. The built-in AI review leaves the local machine and is sent to cloud APIs. For many companies, this is a deal-breaker, especially with proprietary code, before publication, or in GDPR-regulated environments.&lt;/p&gt;

&lt;p&gt;The existing solution from OpenAI (Codex CLI with Codex-Plugin-CC) pointed the way: a plugin that adds a second AI review. But it was tied to Codex – a cloud service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;localreview&lt;/strong&gt; takes the same approach, but &lt;strong&gt;cloud-independent&lt;/strong&gt;. It sends your diff to a locally running, OpenAI-compatible model – for example, oMLX on your MacBook, or in the future LM Studio.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;The plugin is implemented as a Claude Code plugin and provides five slash commands:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Function&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/localreview:review&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Starts a review of the current diff (with options for scope, branch, model)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/localreview:status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Shows running and completed review jobs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/localreview:result&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Shows the result of a completed review&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/localreview:cancel&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cancels a running review&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/localreview:setup&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Checks if the local server is reachable and lists available models&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The review runs &lt;strong&gt;fully asynchronously&lt;/strong&gt; – large models take several minutes. With &lt;code&gt;--background&lt;/code&gt;, you keep working while the review runs in the background.&lt;/p&gt;

&lt;h2&gt;
  
  
  Local models as the review engine
&lt;/h2&gt;

&lt;p&gt;In the first step, localreview supports &lt;strong&gt;oMLX&lt;/strong&gt; – an LLM inference server specialized for Apple Silicon with continuous batching, SSD caching, and multi-model management. oMLX runs on the MacBook and provides an OpenAI-compatible API at &lt;code&gt;http://127.0.0.1:8000/v1&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The extension to &lt;strong&gt;LM Studio&lt;/strong&gt; is already built into the architecture – since LM Studio also offers an OpenAI-compatible API, only minor adjustments in the configuration are needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The crucial difference: data protection
&lt;/h2&gt;

&lt;p&gt;Unlike cloud-based review solutions, with localreview your code &lt;strong&gt;never&lt;/strong&gt; leaves your machine. Communication runs exclusively over &lt;code&gt;localhost&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No data transfer to the cloud&lt;/li&gt;
&lt;li&gt;No dependency on external APIs&lt;/li&gt;
&lt;li&gt;No storage on third-party servers&lt;/li&gt;
&lt;li&gt;Fully GDPR-compliant&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The plugin even explicitly warns you if you accidentally configure an external address – your security is built in, not optional.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# In Claude Code:&lt;/span&gt;
/plugin marketplace add mjochum64/localreview
/plugin &lt;span class="nb"&gt;install &lt;/span&gt;localreview@localreview
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After that, a simple &lt;code&gt;/localreview:setup&lt;/code&gt; checks whether your local server is running.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuration
&lt;/h2&gt;

&lt;p&gt;You have three ways to configure the server and model (in this order):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;CLI flag:&lt;/strong&gt; &lt;code&gt;--model &amp;lt;id&amp;gt;&lt;/code&gt; on the review command&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Environment variables:&lt;/strong&gt; &lt;code&gt;LOCALREVIEW_BASE_URL&lt;/code&gt;, &lt;code&gt;LOCALREVIEW_MODEL&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Config file:&lt;/strong&gt; &lt;code&gt;~/.config/localreview/config.json&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By default, localreview connects to &lt;code&gt;http://127.0.0.1:8000/v1&lt;/code&gt; and selects the first available model.&lt;/p&gt;

&lt;h2&gt;
  
  
  What makes localreview special
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Read-only:&lt;/strong&gt; The plugin never changes code, never applies suggestions, and runs only on your explicit request&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured output:&lt;/strong&gt; Findings are sorted by severity (via JSON schema)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sensitive files excluded:&lt;/strong&gt; &lt;code&gt;.env&lt;/code&gt;, &lt;code&gt;.pem&lt;/code&gt;, SSH keys, and similar files never even make it into the diff&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;German interface:&lt;/strong&gt; Commands, error messages, and the review itself are in German&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open source:&lt;/strong&gt; Apache-2.0 license – viewable, extensible, auditable&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Outlook
&lt;/h2&gt;

&lt;p&gt;localreview is the first step in a direction I believe represents the future of code review: &lt;strong&gt;local AI as a second pair programmer&lt;/strong&gt;, independent, data‑protection‑compliant, and always available. Integration of LM Studio, more model backends, and an English interface are the logical next steps.&lt;/p&gt;

&lt;p&gt;Anyone who wants to get involved: the repository is open for issues, pull requests, and ideas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/mjochum64/localreview" rel="noopener noreferrer"&gt;localreview auf GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jundot/omlx" rel="noopener noreferrer"&gt;oMLX – LLM Inference Server für Apple Silicon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/openai/codex-plugin-cc" rel="noopener noreferrer"&gt;OpenAI Codex Plugin for Claude Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>codereview</category>
      <category>claudecode</category>
    </item>
    <item>
      <title>Supply Chain Security 2026: SBOM, Sigstore/SLSA, and Admission Control as DevOps Standard</title>
      <dc:creator>saaro</dc:creator>
      <pubDate>Sun, 13 Sep 2026 11:45:14 +0000</pubDate>
      <link>https://dev.to/saaro_net/supply-chain-security-2026-sbom-sigstoreslsa-and-admission-control-as-devops-standard-3lbl</link>
      <guid>https://dev.to/saaro_net/supply-chain-security-2026-sbom-sigstoreslsa-and-admission-control-as-devops-standard-3lbl</guid>
      <description>&lt;p&gt;Software supply chain attacks are estimated to cost the global economy 80.6 billion US dollars in 2026 – an increase of 76 percent compared to 2023. The Jaguar Land Rover attack alone in August 2025 caused 1.9 billion pounds in damage and halted production for five weeks. Attacks on container images, CI/CD pipelines, and build systems are no longer future scenarios but the new reality for DevOps teams. With the first EU Cyber Resilience Act (CRA) reporting obligations taking effect in September 2026, supply chain security is shifting from nice-to-have to regulatory requirement.&lt;/p&gt;

&lt;h2&gt;
  
  
  SBOM: The Digital Table of Contents for Software
&lt;/h2&gt;

&lt;p&gt;A Software Bill of Materials (SBOM) is the foundation of any supply chain security. It lists all components, libraries, and dependencies of an application – similar to the ingredient list on food products. The EU CRA mandates, starting September 2026, an SBOM in machine-readable format for products with digital elements, capturing at least the most important dependencies.&lt;/p&gt;

&lt;p&gt;The two dominant SBOM formats are &lt;strong&gt;CycloneDX&lt;/strong&gt; and &lt;strong&gt;SPDX&lt;/strong&gt;. For containerized applications, CycloneDX has established itself as the de facto standard since it is specifically designed for container environments. In the CI/CD pipeline, the open-source tool &lt;strong&gt;Syft&lt;/strong&gt; can generate SBOMs automatically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;syft ghcr.io/myorg/myapp:v1.2.3 &lt;span class="nt"&gt;-o&lt;/span&gt; cyclonedx-json &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; sbom.cyclonedx.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An SBOM alone, however, does not protect against attacks – it only documents the attack surface. Actual security is achieved through signing, verifying, and enforcing policies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sigstore: Keyless Signing for Container Images
&lt;/h2&gt;

&lt;p&gt;Sigstore is an open-source project by the Linux Foundation that enables cryptographic signing without managing your own GPG keys or PKI infrastructure. The underlying tool &lt;strong&gt;Cosign&lt;/strong&gt; uses OIDC tokens from CI platforms such as GitHub Actions or GitLab CI as identity – so-called &lt;em&gt;keyless signing&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The practical application is remarkably simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cosign sign &lt;span class="nt"&gt;--yes&lt;/span&gt; ghcr.io/myorg/myapp:v1.2.3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For verification, this suffices:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cosign verify &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--certificate-identity&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;ci@myorg.com &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--certificate-oidc-issuer&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;https://token.actions.githubusercontent.com &lt;span class="se"&gt;\&lt;/span&gt;
  ghcr.io/myorg/myapp:v1.2.3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Since the identity comes directly from the CI context, the problem of key management is eliminated. No secrets that can be rotated, secured, or leaked.&lt;/p&gt;

&lt;h2&gt;
  
  
  SLSA: Maturity Model for Build Integrity
&lt;/h2&gt;

&lt;p&gt;The SLSA framework (Supply-chain Levels for Software Artifacts, pronounced "salsa") defines four levels of build integrity:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Level 1:&lt;/strong&gt; The build process is documented and not manual.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Level 2:&lt;/strong&gt; The build runs hosted and versioned; provenance is recorded as an attestation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Level 3:&lt;/strong&gt; The build platform itself is hardened – isolated, immutable build environments prevent manipulation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Level 4:&lt;/strong&gt; Two-person review and hermetic builds (fully reproducible).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most organizations should aim for at least &lt;strong&gt;SLSA Level 3&lt;/strong&gt;. This ensures that an attacker who has gained access to the CI system cannot deliver manipulated artifacts without it being detectable. SLSA Level 4 is currently only realistic for particularly critical infrastructure components.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kubernetes Admission Control: The Enforcement Layer
&lt;/h2&gt;

&lt;p&gt;Signed images are of little use if the signature is not enforced. This is where Kubernetes admission controllers come into play. With &lt;strong&gt;Kyverno&lt;/strong&gt; or &lt;strong&gt;OPA/Gatekeeper&lt;/strong&gt;, you can enforce that only signed images run on a cluster:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;kyverno.io/v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ClusterPolicy&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;verify-image-signatures&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;validationFailureAction&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;enforce&lt;/span&gt;
  &lt;span class="na"&gt;rules&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;verify-cosign-signature&lt;/span&gt;
    &lt;span class="na"&gt;match&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;resources&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;kinds&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Pod"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
    &lt;span class="na"&gt;verifyImages&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;imageReferences&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ghcr.io/myorg/*"&lt;/span&gt;
      &lt;span class="na"&gt;attestors&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;entries&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;keyless&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;subject&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ci@myorg.com"&lt;/span&gt;
            &lt;span class="na"&gt;issuer&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://token.actions.githubusercontent.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This policy blocks any pod whose container image lacks a valid Cosign signature with the expected identity. Unsigned or manipulated images are automatically rejected – before they are even executed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Complete DevOps Pipeline
&lt;/h2&gt;

&lt;p&gt;In practice, a six-step security workflow has become established:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Build&lt;/strong&gt; – Reproducible, hermetic builds in isolated CI environments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scan&lt;/strong&gt; – Vulnerability scanning with Trivy or Grype immediately after the build&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sign&lt;/strong&gt; – Keyless signing with Cosign and Sigstore&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Attest&lt;/strong&gt; – Attach SBOM and scan results as verifiable attestations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify&lt;/strong&gt; – Admission controllers (Kyverno/OPA) enforce signed images in the cluster&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitor&lt;/strong&gt; – Continuously scan running containers for new CVEs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Organizations implementing this workflow report 76 percent fewer security incidents in the supply chain and save an average of 1.76 million US dollars per prevented breach.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Supply chain security is no longer an optional DevSecOps add-on in 2026. With the EU Cyber Resilience Act, SBOMs and verifiable build integrity are already regulatory requirements for many companies. The good news: The tools are mature, open source, and production-proven. Sigstore/Cosign, the SLSA framework, and Kubernetes admission controllers form a triad that effectively prevents attacks on the software supply chain. DevOps teams that start today with SBOM generation, keyless signing, and Kyverno policies are not only more secure – they are also on the safe side regulatory-wise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://devops.gheware.com/blog/posts/container-supply-chain-security-2026.html" rel="noopener noreferrer"&gt;Container Supply Chain Security 2026: Why 67% Can't Detect the Threat&lt;/a&gt; — Gheware DevOps AI Blog&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://lucaberton.com/blog/supply-chain-security-slsa-sigstore/" rel="noopener noreferrer"&gt;Supply Chain Security in 2026: SLSA, Sigstore, and Cosign&lt;/a&gt; — Luca Berton&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sota.io/blog/eu-cra-sbom-requirements-2026" rel="noopener noreferrer"&gt;CRA SBOM Requirements 2026 — CycloneDX vs SPDX&lt;/a&gt; — sota.io Blog&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://medium.com/devops-ai-decoded/software-supply-chain-security-the-2026-threat-landscape-4ce9b9019370" rel="noopener noreferrer"&gt;Software Supply Chain Security: The 2026 Threat Landscape&lt;/a&gt; — Medium / DevOps AI Decoded&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://techbytes.app/posts/supply-chain-security-2026-sigstore-slsa-3-guide/" rel="noopener noreferrer"&gt;Supply Chain Security 2026: Sigstore and SLSA 3 Guide&lt;/a&gt; — Tech Bytes&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devops</category>
      <category>supplychainsecurity</category>
      <category>sigstore</category>
      <category>slsa</category>
    </item>
    <item>
      <title>Kubernetes v1.37 Garhwal: Rootless Kubelet, Gang Scheduling, and Native Pod Certificates</title>
      <dc:creator>saaro</dc:creator>
      <pubDate>Sun, 13 Sep 2026 11:45:13 +0000</pubDate>
      <link>https://dev.to/saaro_net/kubernetes-v137-garhwal-rootless-kubelet-gang-scheduling-and-native-pod-certificates-299f</link>
      <guid>https://dev.to/saaro_net/kubernetes-v137-garhwal-rootless-kubelet-gang-scheduling-and-native-pod-certificates-299f</guid>
      <description>&lt;p&gt;On August 26, 2026, Kubernetes v1.37 "Garhwal" was released – with 67 enhancements, including 16 stable and 23 beta features. While the release builds on the foundations of its predecessors, it sets a clear focus on operational security, resource efficiency, and the growing importance of AI/ML workloads. Which changes really matter for cluster operators.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rootless Kubelet: A New Level of Security
&lt;/h2&gt;

&lt;p&gt;The kubelet has historically run as a root process on the node – an attack vector that exposes the entire machine if compromised. With v1.37, the rootless kubelet (feature gate &lt;code&gt;KubeletInUserNamespace&lt;/code&gt;) reaches beta status. The entire node stack – kubelet, kube-proxy, CRI and OCI runtime – can now run in a user namespace as an unprivileged user.&lt;/p&gt;

&lt;p&gt;The practical consequence: code execution in the kubelet no longer ends with root privileges on the host. Combined with the stable user namespaces from v1.36, the trust boundary of a Kubernetes node shifts fundamentally – particularly relevant for edge deployments with physical access or multi-tenant clusters. The feature is disabled by default; cluster operators should pilot it on edge and scenarios with heightened security requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pod Certificates and KYAML: Stability for Daily Operations
&lt;/h2&gt;

&lt;p&gt;Two long-awaited innovations reach stable status in v1.37:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pod Certificates and Cluster Trust Bundles&lt;/strong&gt; enable native mTLS certificates for pods directly from the cluster. The kubelet requests a certificate via a &lt;code&gt;PodCertificateRequest&lt;/code&gt; object, an integrated signer issues it, and via a projected volume it lands directly in the pod's filesystem. Management via &lt;code&gt;ClusterTrustBundle&lt;/code&gt; objects distributes the trust anchors. This makes external solutions like cert-manager unnecessary in many scenarios – certificate rotation happens natively through the kubelet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;KYAML&lt;/strong&gt; – a safer, ambiguity-free YAML subset specifically for Kubernetes – is now stable after graduating from alpha (v1.34) to beta (v1.35). Every KYAML file is valid YAML, but not every YAML is KYAML. Anyone who has ever experienced &lt;code&gt;"NO"&lt;/code&gt; being interpreted as boolean &lt;code&gt;false&lt;/code&gt; knows why that matters. The command &lt;code&gt;kubectl get -o kyaml&lt;/code&gt; is now ready for production use.&lt;/p&gt;

&lt;p&gt;Also after nine years of beta: the &lt;strong&gt;Metrics API&lt;/strong&gt; (&lt;code&gt;metrics.k8s.io&lt;/code&gt;) is stable. CPU and memory data for pods and nodes, which power features like &lt;code&gt;kubectl top&lt;/code&gt; and the HPA, are now available via a GA API.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gang Scheduling and DRA: AI/ML Workloads in Focus
&lt;/h2&gt;

&lt;p&gt;Kubernetes is increasingly becoming the orchestrator for AI training and HPC simulations. This release addresses exactly that: &lt;strong&gt;Gang Scheduling&lt;/strong&gt; (beta behind the feature gate &lt;code&gt;GenericWorkload&lt;/code&gt;) allows an "all-or-nothing" strategy – a group of pods (a PodGroup) is only scheduled if the cluster has enough resources for the entire group. Previously, the scheduler could spread individual pods while others waited for capacity, leading to deadlocks.&lt;/p&gt;

&lt;p&gt;The Workload and PodGroup APIs reach &lt;code&gt;v1beta1&lt;/code&gt;, the &lt;code&gt;minCount&lt;/code&gt; field is now mutable, and the scheduler only enqueues the PodGroup object – no longer each member individually. The new &lt;strong&gt;CompositePodGroup API&lt;/strong&gt; (alpha) enables hierarchical scheduling structures for complex, heterogeneous workloads such as those managed by JobSet and LeaderWorkerSet (LWS).&lt;/p&gt;

&lt;p&gt;In the area of Dynamic Resource Allocation (DRA), four features become stable, including ResourceClaim status with standardized network interface data and Device Taints/Tolerations – crucial for GPU workloads where fine-grained control over resource allocation is needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  HPA Scale-to-Zero and Other Highlights
&lt;/h2&gt;

&lt;p&gt;The HorizontalPodAutoscaler feature &lt;strong&gt;Scale-to-Zero&lt;/strong&gt; (beta, now enabled by default) allows workloads to scale down to zero pods when there is no load – for example, queue consumers, batch jobs, or GPU workloads during idle periods. The metric must be based on object or external metrics, since CPU/memory metrics require active pods.&lt;/p&gt;

&lt;p&gt;Other relevant innovations: &lt;strong&gt;Manifest-based Admission Control&lt;/strong&gt; (beta) allows loading admission webhooks and CEL policies directly from disk, independent of etcd. The &lt;strong&gt;Storage Version Migration&lt;/strong&gt; API (&lt;code&gt;storagemigration.k8s.io/v1&lt;/code&gt;) is stable – data can be automatically migrated to the new storage version after API upgrades. And with &lt;strong&gt;Memory QoS&lt;/strong&gt; (beta, enabled by default), cgroups-v2-based nodes get more effective memory isolation mechanisms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Kubernetes v1.37 "Garhwal" continues the trajectory of previous releases: security and resource efficiency become first and foremost meaningful. The rootless kubelet, native pod certificates, and Memory QoS make the cluster more resilient, while Gang Scheduling and the DRA improvements pave the way for AI/ML workloads on Kubernetes. For operators, a closer look at the beta features is worthwhile – and those relying on edge nodes should put piloting the rootless kubelet on the agenda.&lt;/p&gt;

&lt;p&gt;Preparations for v1.38 are already underway; the shadow team is looking for contributors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/blog/2026/08/26/kubernetes-v1-37-release/" rel="noopener noreferrer"&gt;Kubernetes v1.37: Garhwal – Offizielles Release-Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.devops.dev/kubernetes-v1-37-garhwal-just-landed-rootless-kubelet-kyaml-and-the-quiet-death-of-iptables-a7deeaa6cdd3" rel="noopener noreferrer"&gt;Kubernetes v1.37 "Garhwal" Just Landed – Rootless kubelet, KYAML, and the Quiet Death of iptables (DevOps.dev)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cncf.io/blog/2025/12/15/kubernetes-security-2025-stable-features-and-2026-preview/" rel="noopener noreferrer"&gt;Kubernetes Security: 2025 Stable Features and 2026 Preview (CNCF Blog)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/blog/2026/09/08/kubernetes-v1-37-advancing-workload-aware-scheduling/" rel="noopener noreferrer"&gt;Kubernetes v1.37: Advancing Workload-Aware Scheduling (Kubernetes Blog)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aicybr.com/blog/kubernetes-1-37-workload-aware-scheduling-ai-ml-jobs" rel="noopener noreferrer"&gt;Kubernetes 1.37 Brings Beta Gang Scheduling for AI/ML Jobs (AiCybr)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>security</category>
      <category>ai</category>
    </item>
    <item>
      <title>Presidio 2026: PII Detection and Anonymization for GDPR-Compliant AI Pipelines</title>
      <dc:creator>saaro</dc:creator>
      <pubDate>Sun, 13 Sep 2026 11:41:11 +0000</pubDate>
      <link>https://dev.to/saaro_net/presidio-2026-pii-detection-and-anonymization-for-gdpr-compliant-ai-pipelines-4441</link>
      <guid>https://dev.to/saaro_net/presidio-2026-pii-detection-and-anonymization-for-gdpr-compliant-ai-pipelines-4441</guid>
      <description>&lt;p&gt;Anyone using AI systems like ChatGPT, Claude, or their own Large Language Models (LLMs) in business processes faces a fundamental problem: Personally Identifiable Information (PII) unintentionally ends up in the prompt text box, in log files, or in fine-tuning datasets. However, the GDPR requires data minimization and a clear legal basis for every processing activity. This is where &lt;strong&gt;Presidio&lt;/strong&gt; comes into play – an open-source framework that detects PII in text and images and automatically redacts it before the data reaches an AI system.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Presidio?
&lt;/h2&gt;

&lt;p&gt;Presidio (Latin &lt;em&gt;praesidium&lt;/em&gt; – protection, garrison) was originally developed by Microsoft and released as open source in 2018. Since 2026, the project has been in &lt;strong&gt;transition to a community-led organization&lt;/strong&gt; under the umbrella of the &lt;strong&gt;Data Privacy Stack&lt;/strong&gt; on GitHub (github.com/data-privacy-stack/presidio) – Microsoft supports this step. This is not a fork, but rather the continuation of the same project under new, independent governance. The source code remains available under the MIT license.&lt;/p&gt;

&lt;p&gt;The framework consists of five modules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;presidio-analyzer&lt;/strong&gt; – detects PII in text using regular expressions, Named Entity Recognition (NER), checksums, rule sets, and context analysis&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;presidio-anonymizer&lt;/strong&gt; – replaces, masks, hashes, encrypts, or redacts the detected entities&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;presidio-image-redactor&lt;/strong&gt; – redacts PII in images, including medical DICOM scans&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;presidio-structured&lt;/strong&gt; – searches tabular data (DataFrames) column by column for PII&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;presidio-cli&lt;/strong&gt; – enables command-line scans for CI/CD pipelines&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The current version &lt;strong&gt;2.2.364&lt;/strong&gt; from July 2026 shows active development: Python 3.14 compatibility, new country recognizers (Philippines, Germany), and batch deanonymization were recently added.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does PII protection work?
&lt;/h2&gt;

&lt;p&gt;The typical workflow is two-stage: First, the &lt;strong&gt;AnalyzerEngine&lt;/strong&gt; analyzes the text and returns a list of detected entities with text position and confidence score. Then the &lt;strong&gt;AnonymizerEngine&lt;/strong&gt; takes these results and applies the desired operators.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;presidio_analyzer&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AnalyzerEngine&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;presidio_anonymizer&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AnonymizerEngine&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;presidio_anonymizer.entities&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OperatorConfig&lt;/span&gt;

&lt;span class="n"&gt;analyzer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;AnalyzerEngine&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;anonymizer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;AnonymizerEngine&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Mein Name ist Max Mustermann, Tel: 0170-1234567&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;# Step 1: Detect PII
&lt;/span&gt;&lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;analyzer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;analyze&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;language&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;de&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Step 2: Anonymize PII
&lt;/span&gt;&lt;span class="n"&gt;anonymized&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;anonymizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;anonymize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;analyzer_results&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;operators&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DEFAULT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;OperatorConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;replace&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;anonymized&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Output: "Mein Name ist &amp;lt;PERSON&amp;gt;, Tel: &amp;lt;PHONE_NUMBER&amp;gt;"
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The analyzer currently supports over 100 predefined recognizers for various countries and entity types: from email addresses, IBANs, and credit card numbers to country-specific ID documents. spaCy, Stanza, or Hugging Face Transformers can serve as the NLP engine. Language detection is extensible – while English is configured by default, additional languages can be added by swapping the NLP model and adjusting context words.&lt;/p&gt;

&lt;h2&gt;
  
  
  Presidio in front of AI pipelines: Working GDPR-compliant
&lt;/h2&gt;

&lt;p&gt;The most important use case for companies is &lt;strong&gt;deployment as a protective layer in front of LLMs&lt;/strong&gt;. Before a prompt reaches an AI service, it passes through Presidio: email addresses, phone numbers, names, and other personal data are replaced with placeholders. The risk of unintentional data disclosure drops dramatically.&lt;/p&gt;

&lt;p&gt;From a GDPR perspective, however, an important nuance must be noted: Presidio typically performs &lt;strong&gt;pseudonymization&lt;/strong&gt;, not complete anonymization. Since the encrypted or hashed values can be restored under certain circumstances (e.g., via the built-in decrypt operator), the data continues to qualify as personal data under GDPR Recital 26 – but the risk is significantly reduced. For true anonymization, the data would need to be irreversibly deleted or aggregated in such a way that no re-identification is possible.&lt;/p&gt;

&lt;p&gt;Presidio can be operated in various ways: embedded as a Python library in existing applications, as a Docker container for microservice architectures, via PySpark for batch processing on data pools, or in Kubernetes clusters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations and honesty
&lt;/h2&gt;

&lt;p&gt;The developers of Presidio are transparent: &lt;strong&gt;"Presidio can help identify sensitive/PII data in un/structured text. However, because it is using automated detection mechanisms, there is no guarantee that Presidio will find all sensitive information."&lt;/strong&gt; PII detection is never 100% accurate – NER models can produce false positives, miss unusual formats, or misinterpret context. Presidio is a powerful tool, but not a substitute for legal advice or a comprehensive Data Protection Impact Assessment (DPIA).&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Presidio has evolved from a Microsoft-internal tool into an independent community project and is today the most mature open-source building block for PII detection and anonymization. For companies that want to operate AI systems GDPR-compliant, it is one of the most practical solutions: it is self-hostable, auditable, extensible, and covers text, images, and tabular data. Anyone looking to add a PII protection layer to their AI workflow will find a solid, actively maintained entry point in Presidio.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Representative documentation homepage – Presidio by Data Privacy Stack: &lt;a href="https://presidio.dataprivacystack.org" rel="noopener noreferrer"&gt;https://presidio.dataprivacystack.org&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub repository (README, license, architecture): &lt;a href="https://github.com/data-privacy-stack/presidio" rel="noopener noreferrer"&gt;https://github.com/data-privacy-stack/presidio&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Project Transition – Microsoft → Community project: &lt;a href="https://github.com/data-privacy-stack/presidio/blob/main/docs/project_transition.md" rel="noopener noreferrer"&gt;https://github.com/data-privacy-stack/presidio/blob/main/docs/project_transition.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Releases – Version 2.2.364 (July 22, 2026): &lt;a href="https://github.com/data-privacy-stack/presidio/releases" rel="noopener noreferrer"&gt;https://github.com/data-privacy-stack/presidio/releases&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Analyzer documentation (architecture, recognizers, API): &lt;a href="https://presidio.dataprivacystack.org/analyzer/" rel="noopener noreferrer"&gt;https://presidio.dataprivacystack.org/analyzer/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Anonymizer documentation (operators, hash, encrypt): &lt;a href="https://presidio.dataprivacystack.org/anonymizer/" rel="noopener noreferrer"&gt;https://presidio.dataprivacystack.org/anonymizer/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Multi-language support in Presidio: &lt;a href="https://presidio.dataprivacystack.org/analyzer/languages/" rel="noopener noreferrer"&gt;https://presidio.dataprivacystack.org/analyzer/languages/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Pasquale Pillitteri (June 19, 2026, updated July 15, 2026) – Presidio &amp;amp; GDPR: &lt;a href="https://pasqualepillitteri.it/en/news/5538/microsoft-presidio-pii-data-protection-ai" rel="noopener noreferrer"&gt;https://pasqualepillitteri.it/en/news/5538/microsoft-presidio-pii-data-protection-ai&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>privacy</category>
      <category>gdpr</category>
      <category>pii</category>
    </item>
  </channel>
</rss>
