<?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: PaoloMassignan</title>
    <description>The latest articles on DEV Community by PaoloMassignan (@paolomassignan).</description>
    <link>https://dev.to/paolomassignan</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%2F3968071%2F746f721b-2a19-40c3-9702-08f0e12e5c2c.jpeg</url>
      <title>DEV Community: PaoloMassignan</title>
      <link>https://dev.to/paolomassignan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/paolomassignan"/>
    <language>en</language>
    <item>
      <title>Are We Sending More Code To AI Than We Actually Need To?</title>
      <dc:creator>PaoloMassignan</dc:creator>
      <pubDate>Wed, 10 Jun 2026 14:13:39 +0000</pubDate>
      <link>https://dev.to/paolomassignan/are-we-sending-more-code-to-ai-than-we-actually-need-to-28d5</link>
      <guid>https://dev.to/paolomassignan/are-we-sending-more-code-to-ai-than-we-actually-need-to-28d5</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5tl3tr56cyqxbi0xewx1.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5tl3tr56cyqxbi0xewx1.gif" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Imagine both snippets are sent to Claude.&lt;/p&gt;

&lt;p&gt;The first contains the full implementation.&lt;br&gt;
The second contains only a description of what the code does.&lt;/p&gt;

&lt;p&gt;The question that started bothering me was simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Does the model really need the implementation?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or are we sending more knowledge than we actually need to?&lt;/p&gt;


&lt;h2&gt;
  
  
  A strange dilemma
&lt;/h2&gt;

&lt;p&gt;A few months ago I started using AI coding tools seriously.&lt;/p&gt;

&lt;p&gt;Like many developers, I was impressed almost immediately.&lt;br&gt;
Refactoring became easier.&lt;br&gt;
Boilerplate almost disappeared.&lt;br&gt;
Understanding unfamiliar code became dramatically faster.&lt;br&gt;
Tasks I would normally postpone became easier to start.&lt;/p&gt;

&lt;p&gt;The more I used these tools, the harder it became to ignore how useful they were.&lt;/p&gt;

&lt;p&gt;Then I went back to work.&lt;/p&gt;

&lt;p&gt;And for the first time, I found myself understanding both sides of the discussion.&lt;br&gt;
I understood why developers love these tools.&lt;br&gt;
And I understood why companies are nervous about them.&lt;/p&gt;

&lt;p&gt;Because source code isn't just source code.&lt;br&gt;
It contains years—sometimes decades—of accumulated know-how.&lt;br&gt;
Business rules.&lt;br&gt;
Optimization strategies.&lt;br&gt;
Manufacturing expertise.&lt;br&gt;
Pricing models.&lt;br&gt;
Customer-specific workflows.&lt;br&gt;
The things that actually make companies different.&lt;/p&gt;

&lt;p&gt;I don't think those concerns are irrational.&lt;/p&gt;

&lt;p&gt;At the same time, after seeing what tools like Claude Code can do, I couldn't help thinking we'd be crazy not to use them.&lt;/p&gt;

&lt;p&gt;And that led me to a question.&lt;/p&gt;


&lt;h2&gt;
  
  
  Are we solving the wrong problem?
&lt;/h2&gt;

&lt;p&gt;Most discussions about AI coding tools eventually arrive at the same conclusion:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"If you want the benefits of cloud AI, you have to send your code."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And if your company is uncomfortable with that, there are only two possible answers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ban AI tools.&lt;/li&gt;
&lt;li&gt;Accept the risk.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But are those really the only options?&lt;/p&gt;

&lt;p&gt;Because when I looked at the actual tasks I was asking AI to perform, something felt off.&lt;br&gt;
Did Claude really need to see every pricing formula?&lt;br&gt;
Every optimization heuristic?&lt;br&gt;
Every business-specific rule?&lt;br&gt;
Every implementation detail?&lt;/p&gt;

&lt;p&gt;Or was it possible that, for many tasks, the model only needed to understand the intent?&lt;/p&gt;

&lt;p&gt;That question became an obsession.&lt;/p&gt;


&lt;h2&gt;
  
  
  A simple thought experiment
&lt;/h2&gt;

&lt;p&gt;Imagine asking Claude to help with this:&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="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;calculate_risk_score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;customer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;transactions&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;

    &lt;span class="c1"&gt;# proprietary implementation
&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;score&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No surprise there. Of course it can work with that.&lt;/p&gt;

&lt;p&gt;But what about this?&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="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;calculate_risk_score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;customer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;transactions&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    Calculates a normalized risk score from customer
    profile information and transaction history.

    Returns a value between 0 and 1.
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The implementation is gone.&lt;br&gt;
The purpose remains.&lt;br&gt;
The interface remains.&lt;br&gt;
The context remains.&lt;/p&gt;

&lt;p&gt;Can the model still help?&lt;br&gt;
Can it still explain the surrounding code, generate tests, suggest refactorings, review architecture, or answer developer questions?&lt;/p&gt;

&lt;p&gt;I didn't know. But I wanted to find out.&lt;/p&gt;




&lt;h2&gt;
  
  
  Going down the rabbit hole
&lt;/h2&gt;

&lt;p&gt;The deeper I looked, the more interesting the question became.&lt;/p&gt;

&lt;p&gt;Modern coding models derive a surprising amount of value from things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Naming conventions&lt;/li&gt;
&lt;li&gt;Interfaces and signatures&lt;/li&gt;
&lt;li&gt;Architecture pattern&lt;/li&gt;
&lt;li&gt;Code comments&lt;/li&gt;
&lt;li&gt;File structure&lt;/li&gt;
&lt;li&gt;Surrounding context&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In many situations, they seem to care less about implementation details than we instinctively assume.&lt;br&gt;
Not always. But often enough to make me curious.&lt;/p&gt;

&lt;p&gt;And curiosity eventually turned into an experiment.&lt;/p&gt;




&lt;h2&gt;
  
  
  That experiment became Kiri
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Kiri&lt;/strong&gt; started from a very simple idea:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What happens if implementation details are removed before they leave the machine?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead of forwarding source code unchanged, Kiri attempts to replace selected implementations with higher-level descriptions while preserving enough context for the model to remain useful.&lt;/p&gt;

&lt;p&gt;Not because I believe implementation details never matter. They absolutely do.&lt;br&gt;
But because I wanted to explore a different question: &lt;strong&gt;How much usefulness survives when implementation details disappear?&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa6nvsh61r1q4jq2kos2i.gif" alt=" " width="754" height="764"&gt;
&lt;/h2&gt;

&lt;p&gt;The workflow is intentionally simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A coding assistant sends a prompt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kiri&lt;/strong&gt; intercepts it.&lt;/li&gt;
&lt;li&gt;Protected implementations are replaced with functional descriptions.&lt;/li&gt;
&lt;li&gt;The modified prompt is forwarded to the model.&lt;/li&gt;
&lt;li&gt;The model responds normally.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The interesting part isn't the proxy itself. The interesting part is understanding where this approach works—and where it doesn't.&lt;/p&gt;




&lt;h2&gt;
  
  
  Measuring intuition
&lt;/h2&gt;

&lt;p&gt;At this point I had plenty of opinions. What I didn't have was data.&lt;/p&gt;

&lt;p&gt;So I built a benchmark suite. &lt;br&gt;
Not to prove that redaction always works (it doesn't), and not to prove that models never need implementation details (they often do).&lt;/p&gt;

&lt;p&gt;Instead, I wanted to understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How much code could be removed&lt;/li&gt;
&lt;li&gt;How much context could be preserved&lt;/li&gt;
&lt;li&gt;Which approaches worked best&lt;/li&gt;
&lt;li&gt;Where the idea breaks down&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some tasks degrade quickly. Others remain surprisingly resilient. &lt;br&gt;
The results ended up being at least as interesting as the original idea.&lt;/p&gt;




&lt;h2&gt;
  
  
  What surprised me most
&lt;/h2&gt;

&lt;p&gt;The biggest surprise wasn't that redaction sometimes worked. &lt;/p&gt;

&lt;p&gt;It was realizing that source code contains multiple layers of information:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Interfaces&lt;/li&gt;
&lt;li&gt;Intent&lt;/li&gt;
&lt;li&gt;Architecture&lt;/li&gt;
&lt;li&gt;Business rules&lt;/li&gt;
&lt;li&gt;Proprietary logic&lt;/li&gt;
&lt;li&gt;Competitive knowledge&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not all layers have the same value. And not all layers are equally necessary for every AI-assisted task.&lt;/p&gt;

&lt;p&gt;That realization changed how I think about AI adoption.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;I'm not claiming to have solved the problem. If anything, the more I explored it, the more complicated it became.&lt;/p&gt;

&lt;p&gt;But I do think we should challenge one common assumption: &lt;strong&gt;Cloud AI may not need to see every implementation detail to remain useful.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And if that's true, then perhaps the conversation shouldn't be &lt;em&gt;"Should we use AI?"&lt;/em&gt;, but rather:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What information does AI actually need?"&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  💬 Let's discuss!
&lt;/h3&gt;

&lt;p&gt;I'd genuinely love to hear how other teams are approaching this problem. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are AI coding tools fully allowed in your company?&lt;/li&gt;
&lt;li&gt;Are they restricted or completely banned?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Are we sending more code to AI than we actually need to?&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let me know your thoughts in the comments below!&lt;/p&gt;

&lt;h3&gt;
  
  
  🔗 Project Links
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://paolomassignan.github.io/kiri/" rel="noopener noreferrer"&gt;Github/kiri&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/PaoloMassignan/kiri" rel="noopener noreferrer"&gt;PaoloMassignan/kiri&lt;/a&gt; (Leave a ⭐ if you like the concept!)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://github.com/PaoloMassignan/kiri-demo" rel="noopener noreferrer"&gt;kiri-demo&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Benchmark Details:&lt;/strong&gt; Check the full data directly in the &lt;a href="https://github.com" rel="noopener noreferrer"&gt;Kiri Benchmark Section&lt;/a&gt; &lt;em&gt;(Nota: punta alla sezione corretta del tuo README)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>opensource</category>
      <category>privacy</category>
    </item>
    <item>
      <title>My Company Wouldn't Let Me Use Claude Code. So I Built a Proxy That Redacts Code Locally</title>
      <dc:creator>PaoloMassignan</dc:creator>
      <pubDate>Fri, 05 Jun 2026 07:16:01 +0000</pubDate>
      <link>https://dev.to/paolomassignan/my-company-wouldnt-let-me-use-claude-code-so-i-built-a-proxy-that-redacts-code-locally-27a4</link>
      <guid>https://dev.to/paolomassignan/my-company-wouldnt-let-me-use-claude-code-so-i-built-a-proxy-that-redacts-code-locally-27a4</guid>
      <description>&lt;p&gt;AI coding assistants are getting incredibly good. Tools like Claude Code, Cursor, and Windsurf can explain unfamiliar code, navigate large codebases, generate boilerplate, and often solve problems faster than a traditional web search.&lt;/p&gt;

&lt;p&gt;But there is a problem that many engineering teams are quietly struggling with: &lt;strong&gt;How do you use cloud-based AI tools without exposing proprietary source code?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine asking an AI assistant to help refactor a critical module. To get a useful answer, you need to provide context. That context may contain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Proprietary algorithms&lt;/li&gt;
&lt;li&gt;Customer-specific workflows&lt;/li&gt;
&lt;li&gt;Internal APIs&lt;/li&gt;
&lt;li&gt;Database schemas&lt;/li&gt;
&lt;li&gt;Business rules accumulated over years&lt;/li&gt;
&lt;li&gt;Naming conventions that reveal how your systems work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For many organizations, that risk is enough to stop the conversation before it even starts. In many cases, the concern exists even when the AI provider offers enterprise-grade guarantees, private deployments, or strong privacy commitments.&lt;/p&gt;

&lt;p&gt;As a software manager working with large proprietary codebases, I kept running into the same dilemma:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Developers&lt;/strong&gt; wanted the productivity gains of AI-assisted development.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The company&lt;/strong&gt; wanted to protect its intellectual property.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both positions were perfectly reasonable. The challenge was finding a middle ground.&lt;/p&gt;

&lt;h2&gt;
  
  
  What If Sensitive Code Never Left the Network?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiflhgef9opnc72u82ntl.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiflhgef9opnc72u82ntl.gif" alt=" " width="754" height="764"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instead of asking whether AI coding assistants should be allowed, I started asking a different question: &lt;em&gt;«What if the sensitive parts of the code never left the network in the first place?»&lt;/em&gt; Could developers still benefit from AI assistance if the model only saw a sanitized version of the code?&lt;/p&gt;

&lt;p&gt;That idea eventually became &lt;strong&gt;Kiri&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Core Idea
&lt;/h2&gt;

&lt;p&gt;Kiri is an open-source, on-premises proxy that sits between AI coding tools and cloud LLM providers. &lt;/p&gt;

&lt;p&gt;Before a request reaches the model, Kiri intercepts it locally, identifies proprietary implementation details, and replaces sensitive information with placeholders. The sanitized request is then forwarded to the AI provider, and the response is returned to the developer.&lt;/p&gt;

&lt;p&gt;For example, instead of sending your raw business logic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Before Kiri&lt;/span&gt;
 &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;decimal&lt;/span&gt; &lt;span class="nf"&gt;CalculateDiscount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Order&lt;/span&gt; &lt;span class="n"&gt;order&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;tier&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;_tiers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;order&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Customer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Tier&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tier&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Base&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;order&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TotalUnits&lt;/span&gt; &lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="n"&gt;tier&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PerUnit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tier&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Cap&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The external model receives:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// After Kiri&lt;/span&gt;
  &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;decimal&lt;/span&gt; &lt;span class="nf"&gt;CalculateDiscount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Order&lt;/span&gt; &lt;span class="n"&gt;order&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// [PROTECTED: implementation is confidential]&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The overall structure of the problem remains understandable, while the implementation details do not. The goal is not perfect secrecy. The goal is reducing the amount of sensitive information that leaves the organization while preserving enough context for the AI assistant to remain useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hard Part Wasn't Building the Proxy
&lt;/h2&gt;

&lt;p&gt;The most interesting challenge turned out to be something else entirely: &lt;strong&gt;How much information can you remove before the AI stops being useful?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Remove too little and you risk exposing information you care about. Remove too much and the model can no longer understand the problem. Finding that balance turned into a series of experiments. &lt;/p&gt;

&lt;p&gt;In some scenarios, the model remained surprisingly useful even after aggressive redaction. In others, removing key information quickly degraded the quality of the answers. What I learned is that privacy is not a binary choice between "send everything" and "send nothing." There is a large and mostly unexplored design space in between.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Not Just Use Enterprise AI?
&lt;/h2&gt;

&lt;p&gt;This is a reasonable question. Many AI providers already offer enterprise agreements, private deployments, and data-retention guarantees. For some organizations, that is probably enough.&lt;/p&gt;

&lt;p&gt;For others, legal requirements, internal policies, customer contracts, regulatory concerns, or simple risk aversion still make external code sharing difficult. Kiri is not intended to replace enterprise offerings. It is an attempt to explore another option.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measuring Instead of Guessing
&lt;/h2&gt;

&lt;p&gt;One unexpected result of the project was the benchmark itself. I quickly realized that discussions about AI privacy often become theoretical. Everyone has opinions, but very few teams have a way to quantify the trade-off. &lt;/p&gt;

&lt;p&gt;One thing I wanted from the beginning was a way to measure the impact instead of endlessly debating it. Most privacy tools make claims; Kiri lets you measure.&lt;/p&gt;

&lt;p&gt;The project includes a benchmark tool that can run directly against your own repository. Rather than trusting my assumptions, you can test the approach on your own codebase and see what happens.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdb5v79t6xh1ql2ezbzmv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdb5v79t6xh1ql2ezbzmv.png" alt=" " width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The benchmark helps answer questions such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How much code is being redacted?&lt;/li&gt;
&lt;li&gt;Which identifiers remain visible?&lt;/li&gt;
&lt;li&gt;How aggressive should the redaction strategy be?&lt;/li&gt;
&lt;li&gt;How much structural context is still preserved?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I found this far more useful than theoretical discussions about AI privacy because every codebase is different. A strategy that works well for one project may be completely inappropriate for another.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Open Source?
&lt;/h2&gt;

&lt;p&gt;I released Kiri as an open-source project because I suspect many teams are facing the same dilemma. Developers want the benefits of AI-assisted development, while security, legal, and engineering leadership want stronger guarantees around intellectual property. &lt;/p&gt;

&lt;p&gt;Those goals are often presented as mutually exclusive, but I'm not convinced they are.&lt;/p&gt;

&lt;h3&gt;
  
  
  Questions for the Community
&lt;/h3&gt;

&lt;p&gt;I'm genuinely curious how other organizations are approaching this problem today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are AI coding assistants completely &lt;strong&gt;banned&lt;/strong&gt;?&lt;/li&gt;
&lt;li&gt;Are you relying on &lt;strong&gt;enterprise agreements&lt;/strong&gt;?&lt;/li&gt;
&lt;li&gt;Are you running &lt;strong&gt;local models&lt;/strong&gt;?&lt;/li&gt;
&lt;li&gt;Are you building &lt;strong&gt;internal gateways&lt;/strong&gt;?&lt;/li&gt;
&lt;li&gt;Are you taking a &lt;strong&gt;completely different approach&lt;/strong&gt;?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'd love to hear what has worked for you — and what hasn't.&lt;/p&gt;




&lt;h3&gt;
  
  
  Try It Yourself
&lt;/h3&gt;

&lt;p&gt;If you're curious, don't take my word for it. Run the benchmark against your own repository and see how much information can be removed before the AI starts losing context. The results surprised me more than once.&lt;/p&gt;

&lt;p&gt;Kiri is fully open source under the MIT license and includes documentation, examples, and the repository benchmark tool.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📂 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/PaoloMassignan/kiri" rel="noopener noreferrer"&gt;PaoloMassignan/kiri&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🌐 &lt;strong&gt;Project Page:&lt;/strong&gt; [kiri]&lt;a href="https://paolomassignan.github.io/kiri/" rel="noopener noreferrer"&gt;https://paolomassignan.github.io/kiri/&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>claude</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
