<?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: Nice DEV</title>
    <description>The latest articles on DEV Community by Nice DEV (@nice_dev_226).</description>
    <link>https://dev.to/nice_dev_226</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%2F3698586%2F73d63963-9af4-4832-a5b5-59bbebf2a679.jpg</url>
      <title>DEV Community: Nice DEV</title>
      <link>https://dev.to/nice_dev_226</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nice_dev_226"/>
    <language>en</language>
    <item>
      <title>I gave my AI coding agents persistent memory via MCP — here's what actually happened</title>
      <dc:creator>Nice DEV</dc:creator>
      <pubDate>Thu, 12 Nov 2026 19:47:49 +0000</pubDate>
      <link>https://dev.to/nice_dev_226/i-gave-my-ai-coding-agents-persistent-memory-via-mcp-heres-what-actually-happened-586i</link>
      <guid>https://dev.to/nice_dev_226/i-gave-my-ai-coding-agents-persistent-memory-via-mcp-heres-what-actually-happened-586i</guid>
      <description>&lt;p&gt;My agents forget everything between sessions — decisions, bug root causes, "why we didn't use MongoDB". All gone when the context &lt;br&gt;
   window resets.&lt;/p&gt;

&lt;p&gt;So I tried &lt;a href="https://memexa.tech" rel="noopener noreferrer"&gt;Memexa&lt;/a&gt;, a persistent memory layer for coding agents exposed as an MCP server.&lt;/p&gt;

&lt;p&gt;## Setup: one command&lt;/p&gt;

&lt;p&gt;&lt;code&gt;\&lt;/code&gt;&lt;code&gt;bash&lt;br&gt;
   cd my-project&lt;br&gt;
   npx -y memexa-mcp init&lt;br&gt;
   \&lt;/code&gt;&lt;code&gt;\&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Wizard detects your agents (Claude Code, Cursor, Devin, Codex, Gemini…), asks for an API key &lt;strong&gt;once&lt;/strong&gt;, stores it privately. Config&lt;br&gt;
   s contain &lt;strong&gt;zero secrets&lt;/strong&gt; — committable to git, teammates get the same setup by cloning.&lt;/p&gt;

&lt;p&gt;It also writes usage rules into &lt;code&gt;AGENTS.md&lt;/code&gt;/&lt;code&gt;CLAUDE.md&lt;/code&gt; so agents call &lt;code&gt;get_context&lt;/code&gt;, &lt;code&gt;add_decision&lt;/code&gt;, &lt;code&gt;log_bug&lt;/code&gt; &lt;strong&gt;without being as&lt;br&gt;
   ked&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;## It broke on me (instructively)&lt;/p&gt;

&lt;p&gt;First &lt;code&gt;update_context&lt;/code&gt; → &lt;code&gt;500&lt;/code&gt;, retried 4×. Logs showed &lt;code&gt;invalid input value for enum snapshottype: "SESSION"&lt;/code&gt; — a Postgres enum c&lt;br&gt;
   reated by an old migration never got the new label because a later migration skipped when the column already existed.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ALTER TYPE … ADD VALUE&lt;/code&gt; ×4 → fixed in ~30 min. First snapshot written right after.&lt;/p&gt;

&lt;p&gt;## What's actually good&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;add_decision&lt;/code&gt; stores the &lt;em&gt;why&lt;/em&gt; + rejected alternatives — the stuff diffs don't capture&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;log_bug&lt;/code&gt; with root cause → same bug never diagnosed twice&lt;/li&gt;
&lt;li&gt;pgvector &lt;code&gt;search_memory&lt;/code&gt; finds entries even with different wording&lt;/li&gt;
&lt;li&gt;One key → configs for every agent you use&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;## Honest limits&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prompt-driven: agents &lt;em&gt;can&lt;/em&gt; ignore it. Works with Claude Code/Cursor/Devin; tiny local models won't bother&lt;/li&gt;
&lt;li&gt;Free tier = 2 projects&lt;/li&gt;
&lt;li&gt;Rough edges expected — it's new (I found one in the first hour)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;## Verdict&lt;/p&gt;

&lt;p&gt;Context now survives sessions. &lt;code&gt;get_context&lt;/code&gt; at startup gives agents real project awareness instead of a blank slate.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;\&lt;/code&gt;&lt;code&gt;bash&lt;br&gt;
   npx -y memexa-mcp   # key at app.memexa.tech, free tier&lt;br&gt;
   \&lt;/code&gt;&lt;code&gt;\&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Hands-on tryout, not a paid review.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I built a 50-year-old security model for LLM agents. It caught things I didn't expect.</title>
      <dc:creator>Nice DEV</dc:creator>
      <pubDate>Thu, 12 Nov 2026 07:51:54 +0000</pubDate>
      <link>https://dev.to/nice_dev_226/i-built-a-50-year-old-security-model-for-llm-agents-it-caught-things-i-didnt-expect-84m</link>
      <guid>https://dev.to/nice_dev_226/i-built-a-50-year-old-security-model-for-llm-agents-it-caught-things-i-didnt-expect-84m</guid>
      <description>&lt;p&gt;Prompt injection is the problem nobody's actually solved. An agent reads an email or a web page, and hidden inside that data is an&lt;br&gt;
 instruction that redirects it. The model can't tell the difference — to it, everything is just tokens.&lt;/p&gt;

&lt;p&gt;The structural answer has existed for fifty years: information flow control. Data carries labels saying who may read it and who&lt;br&gt;
 vouches for it, and the system checks every flow against a policy. What nobody had done, as far as I could tell, was make it something&lt;br&gt;
 a developer could actually adopt for agents.&lt;/p&gt;

&lt;p&gt;That's what I built with &lt;br&gt;
&lt;a href="https://github.com/NICE-DEV226/kelvra" rel="noopener noreferrer"&gt;kelvra&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You write a policy file naming your sources, your sinks, and the few declared crossings between them — "this summary may now be seen&lt;br&gt;
 by the support team", "a human reviewed this, I vouch for it". In Python, values carry those labels.  emit()  checks the flow before&lt;br&gt;
 data leaves.  model_call()  treats the model as opaque, so the output inherits the strictest label of everything that went in. Coarse,&lt;br&gt;
 yes — but it never under-labels, and under-labeling is what leaks data.&lt;/p&gt;

&lt;p&gt;The part that surprised me most:  kelvra check  analyzes the policy before anything runs. It reads the flow graph and tells you that&lt;br&gt;
 untrusted inbox data can reach a Slack channel with nothing in the way — the shape of an injection attack, found at authoring time. No&lt;br&gt;
 execution, no traffic.&lt;/p&gt;

&lt;p&gt;Every run produces an audit record too: what was read, what crossed, who consented, what got refused. Hash-chained, journaled to disk&lt;br&gt;
 as it happens, signable with Ed25519. The refusals matter as much as the permits — for an auditor, proof a system said no is worth as&lt;br&gt;
 much as the trace of what it allowed.&lt;/p&gt;

&lt;p&gt;Now, the honest part, because I think a security project that oversells is worthless:&lt;/p&gt;

&lt;p&gt;• It can't see inside the model. If an authorized output contains something it shouldn't, Kelvra doesn't know. One attack in my own&lt;br&gt;
     eval corpus gets through for exactly this reason — it's written down in the threat model, not hidden.&lt;br&gt;
   • The in-process runtime is cooperative, not a sandbox. There is an MCP gateway that really does sit in the middle and refuse tool&lt;br&gt;
     calls before they reach the server, but it's stdio only, coarse-grained, and hasn't run against a real MCP application yet.&lt;br&gt;
   • If a source is mislabeled  public , everything downstream works perfectly and protects nothing. That's a people problem, and no amount of code fixes it.&lt;/p&gt;

&lt;p&gt;``CaMeL, FIDES, AgentArmor — better teams already solved enforcement. I'm not competing with them. What I was going for is the layer&lt;br&gt;
 above: a portable label vocabulary, a policy file a non-programmer can read, an audit artifact you could hand to a regulator. Whether&lt;br&gt;
 that gap is real is the open question, and I'd genuinely like to be proven wrong.&lt;/p&gt;

&lt;p&gt;What I'm looking for: I'm one person and the core is done (1200+ tests, zero dependencies), but nothing is deployable until there's a&lt;br&gt;
 framework adapter — LangChain, LlamaIndex, whatever you use. If you build agents and want to wire this into something real, or you&lt;br&gt;
 want to break the spec, come argue with me. Issues and PRs welcome, hostile review especially.&lt;/p&gt;

&lt;p&gt;Star it if the idea is interesting. Contribute if you think it's wrong.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/NICE-DEV226/kelvra" rel="noopener noreferrer"&gt;https://github.com/NICE-DEV226/kelvra&lt;/a&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>cybersecurity</category>
      <category>llm</category>
      <category>security</category>
    </item>
  </channel>
</rss>
