<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>coverctl | Blog</title><description>Agent-loop coverage governance — coverage your AI coding agent calls before commit, not a dashboard you read after CI. MCP-native, polyglot, local-first.</description><link>https://klarlabs-studio.github.io/</link><language>en</language><item><title>Coverage feedback belongs in the agent loop</title><link>https://klarlabs-studio.github.io/coverctl/blog/agent-loop-coverage/</link><guid isPermaLink="true">https://klarlabs-studio.github.io/coverctl/blog/agent-loop-coverage/</guid><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Most coverage tools answer a dashboard question: &lt;em&gt;what was coverage after CI ran?&lt;/em&gt; That is useful for humans reading reports. It is the wrong loop for AI coding agents.&lt;/p&gt;
&lt;p&gt;Agents edit, run tools, and decide whether to keep or revert a change &lt;strong&gt;before&lt;/strong&gt; push. coverctl is built for that loop: per-domain policy in &lt;code dir=&quot;auto&quot;&gt;.coverctl.yaml&lt;/code&gt;, an MCP tool surface (&lt;code dir=&quot;auto&quot;&gt;check&lt;/code&gt; / &lt;code dir=&quot;auto&quot;&gt;suggest&lt;/code&gt; / &lt;code dir=&quot;auto&quot;&gt;debt&lt;/code&gt;), and local-first execution over native runners (pytest, nyc, cargo-llvm-cov, &lt;code dir=&quot;auto&quot;&gt;go test&lt;/code&gt;, …).&lt;/p&gt;
&lt;p&gt;If your coverage system cannot be called mid-edit with a structured pass/fail the agent can act on, it is not agent-loop coverage governance — it is reporting.&lt;/p&gt;
&lt;p&gt;See also: &lt;a href=&quot;https://klarlabs-studio.github.io/coverctl/quick-start-agent/&quot;&gt;Quick start (AI agent)&lt;/a&gt; and &lt;a href=&quot;https://klarlabs-studio.github.io/coverctl/mcp/&quot;&gt;MCP server&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>category</category><category>agents</category></item><item><title>What agents do with coverage output</title><link>https://klarlabs-studio.github.io/coverctl/blog/what-agents-do-with-output/</link><guid isPermaLink="true">https://klarlabs-studio.github.io/coverctl/blog/what-agents-do-with-output/</guid><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;An agent that receives free-form shell output will invent next steps. coverctl returns bounded JSON: &lt;code dir=&quot;auto&quot;&gt;passed&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;summary&lt;/code&gt;, domain rows, and on rejection a stable &lt;code dir=&quot;auto&quot;&gt;error_code&lt;/code&gt; plus &lt;code dir=&quot;auto&quot;&gt;remediation&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That boundary does two jobs:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Actionability&lt;/strong&gt; — the agent knows whether to write tests, lower ambition, or stop.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Safety&lt;/strong&gt; — dangerous runner flags (&lt;code dir=&quot;auto&quot;&gt;--rootdir&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;--require&lt;/code&gt;, …) are rejected before they reach a toolchain.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Read the contract: &lt;a href=&quot;https://klarlabs-studio.github.io/coverctl/security/rejection-schema/&quot;&gt;Rejection schema&lt;/a&gt; and &lt;a href=&quot;https://klarlabs-studio.github.io/coverctl/security/threat-model/&quot;&gt;Threat model&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>mcp</category><category>security</category></item><item><title>From Codecov dashboards to agent-loop gates</title><link>https://klarlabs-studio.github.io/coverctl/blog/from-codecov-to-agent-loop/</link><guid isPermaLink="true">https://klarlabs-studio.github.io/coverctl/blog/from-codecov-to-agent-loop/</guid><pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Codecov and Coveralls excel at historical dashboards and PR badges. coverctl does not replace those products for leadership reporting — it fills the gap &lt;strong&gt;inside&lt;/strong&gt; the edit loop.&lt;/p&gt;
&lt;p&gt;A practical migration:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Keep your existing CI upload for humans.&lt;/li&gt;
&lt;li&gt;Add &lt;code dir=&quot;auto&quot;&gt;.coverctl.yaml&lt;/code&gt; domains that match how you already think about risk (auth, payments, utils).&lt;/li&gt;
&lt;li&gt;Point the agent at &lt;code dir=&quot;auto&quot;&gt;coverctl mcp serve&lt;/code&gt; so &lt;code dir=&quot;auto&quot;&gt;check&lt;/code&gt; runs before commit.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Compare pages: &lt;a href=&quot;https://klarlabs-studio.github.io/coverctl/compare/coverctl-vs-codecov/&quot;&gt;vs Codecov&lt;/a&gt;, &lt;a href=&quot;https://klarlabs-studio.github.io/coverctl/compare/coverctl-vs-coveralls/&quot;&gt;vs Coveralls&lt;/a&gt;, &lt;a href=&quot;https://klarlabs-studio.github.io/coverctl/compare/coverctl-vs-native/&quot;&gt;vs native commands&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>migration</category><category>compare</category></item><item><title>Rejection schemas beat prompt hope</title><link>https://klarlabs-studio.github.io/coverctl/blog/rejection-schemas/</link><guid isPermaLink="true">https://klarlabs-studio.github.io/coverctl/blog/rejection-schemas/</guid><pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Prompt injection against coding agents is not theoretical. If an MCP tool forwards arbitrary flags to pytest or node, a hostile prompt can turn coverage into code execution.&lt;/p&gt;
&lt;p&gt;coverctl’s answer is boring and effective: sanitize inputs, reject known-dangerous shapes with stable error codes, and document the schema so agents (and humans) can recover.&lt;/p&gt;
&lt;p&gt;Details: &lt;a href=&quot;https://klarlabs-studio.github.io/coverctl/security/rejection-schema/&quot;&gt;Rejection schema&lt;/a&gt;. Eval corpus under &lt;code dir=&quot;auto&quot;&gt;internal/eval/scenarios/&lt;/code&gt; gates every PR on this boundary.&lt;/p&gt;</content:encoded><category>security</category><category>mcp</category></item><item><title>The lethal trifecta and local coverage tools</title><link>https://klarlabs-studio.github.io/coverctl/blog/lethal-trifecta/</link><guid isPermaLink="true">https://klarlabs-studio.github.io/coverctl/blog/lethal-trifecta/</guid><pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Security write-ups about agent systems often cite a lethal combination: access to private data, exposure to untrusted content, and ability to communicate externally. coverctl is deliberately narrow: it runs &lt;strong&gt;locally&lt;/strong&gt;, reads coverage profiles and policy you already have, and does not phone home by default.&lt;/p&gt;
&lt;p&gt;Opt-in &lt;code dir=&quot;auto&quot;&gt;--mcp-telemetry&lt;/code&gt; emits JSONL to &lt;strong&gt;your&lt;/strong&gt; stderr for your own pipelines — still no SaaS upload. Platform teams evaluating multi-repo rollout should start from the &lt;a href=&quot;https://klarlabs-studio.github.io/coverctl/security/threat-model/&quot;&gt;threat model&lt;/a&gt; and &lt;a href=&quot;https://klarlabs-studio.github.io/coverctl/for-platform-teams/&quot;&gt;platform teams&lt;/a&gt; pages.&lt;/p&gt;</content:encoded><category>security</category><category>platform</category></item></channel></rss>