<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>agent-security on tomrochette.com</title>
    <link>https://tomrochette.com/tags/agent-security/</link>
    <description>Recent content in agent-security on tomrochette.com</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>tom@tomrochette.com (Tom Rochette)</managingEditor>
    <webMaster>tom@tomrochette.com (Tom Rochette)</webMaster>
    <copyright>© 2026 Tom Rochette</copyright>
    <lastBuildDate>Sun, 11 Oct 2026 23:45:59 -0400</lastBuildDate><atom:link href="https://tomrochette.com/tags/agent-security/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>PIC Standard</title>
      <link>https://tomrochette.com/agents/protocols/pic-standard/</link>
      <pubDate>Sun, 11 Oct 2026 00:00:00 +0000</pubDate>
      <author>tom@tomrochette.com (Tom Rochette)</author>
      <guid>https://tomrochette.com/agents/protocols/pic-standard/</guid>
      <category>research-note</category><category>agent-curated</category><category>fully-ai-generated</category><category>llm=glm-5.3-flash</category><category>protocols</category><category>agent-security</category><category>verification</category><category>provenance</category><category>open-standard</category>
      <description>&lt;p&gt;PIC Standard is an Apache-2.0 protocol for pre-execution action gating: before a high-impact tool call runs, the agent must emit a signed Action Proposal declaring intent, impact, provenance, and evidence, which a local verifier checks fail-closed against a keyring of trusted signers.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Its bet is that the dangerous moment is the instant before execution, and that guarding it takes a verification contract the agent cannot self-certify, not better system prompts or a policy engine above the harness.&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;What it is&#xA;    &lt;div id=&#34;what-it-is&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#what-it-is&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;A protocol plus a Python reference implementation (&lt;code&gt;pip install pic-standard&lt;/code&gt;, &lt;code&gt;pic-cli verify&lt;/code&gt;), with a TypeScript verifier (&lt;code&gt;pic-standard-ts&lt;/code&gt;) that passes the same conformance corpus for canonicalization, core, and trust sanitization as of v0.9.0 (2026-09-21).&#xA;The contract: a proposal carries intent, an impact class (money, privacy, irreversible, compute), provenance entries with trust levels, claims backed by evidence, and the bound tool call; for high-impact actions at least one claim must cite evidence from trusted provenance or the verifier returns block.&#xA;The evidence model distinguishes hash evidence (integrity only, never a trust upgrade) from signature evidence (authority-bearing through the configured keyring), a rule tightened in v0.8.3 after issue 133.&#xA;Specification discipline is unusually formal for the footprint: RFC-0001 as a defensive publication with a SHA-256 anchored artifact, a frozen Canonical JSON v1 spec, PIC-Core and PIC-Evidence drafts in BCP 14 normative language, 84-plus conformance vectors with an eight-token diagnostic taxonomy, differential CI comparing the Python and TypeScript envelopes, an OpenAPI bridge contract, and signed releases.&#xA;The author positions it against identity and delegation work explicitly: PIC decides whether a call is justified to execute now, not who the agent is.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Status&#xA;    &lt;div id=&#34;status&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#status&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Pre-1.0, actively hardened, with the thinnest adoption footprint of any protocol in this category.&lt;/strong&gt;&#xA;67 stars, 47 forks, and 19 open issues and pull requests, created 2026-01-08, pushed 2026-10-10, as of 2026-10-11 (GitHub API).&#xA;PyPI shows v0.9.0 (uploaded 2026-09-21) with 697 downloads in the month ending 2026-10-10.&#xA;The public thread count is one: a Show HN at 1 point (2026-01-13).&#xA;Depth signals offset the reach signals: an independent public-material-only stress test of v0.8.3 by HERMETICUM B.C.E. S.r.l. is recorded with its findings adapted into attributed conformance vectors, external contributors landed conformance vectors and Windows CI, and the project publicly calls for co-maintainers.&lt;/p&gt;&#xA;&lt;picture&gt;&#xA;  &lt;source media=&#34;(prefers-color-scheme: dark)&#34; srcset=&#34;https://api.star-history.com/chart?repos=pic-standard/pic-standard&amp;type=date&amp;theme=dark&amp;legend=top-left&#34; /&gt;&#xA;  &lt;source media=&#34;(prefers-color-scheme: light)&#34; srcset=&#34;https://api.star-history.com/chart?repos=pic-standard/pic-standard&amp;type=date&amp;theme=dark&amp;legend=top-left&#34; /&gt;&#xA;  &lt;img alt=&#34;Star History Chart&#34; src=&#34;https://api.star-history.com/chart?repos=pic-standard/pic-standard&amp;type=date&amp;theme=dark&amp;legend=top-left&#34; /&gt;&#xA;&lt;/picture&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Strengths&#xA;    &lt;div id=&#34;strengths&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#strengths&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;The hash-versus-signature evidence rule is the note&amp;rsquo;s best idea&lt;/strong&gt;: integrity never upgrades trust, only a keyring signature does, which kills the most likely shortcut in any provenance scheme.&lt;/li&gt;&#xA;&lt;li&gt;Fail-closed by construction, with conformance vectors for the falsifiers (hash-only trust upgrades, duplicate IDs, lone surrogates, overpadded signatures) rather than prose assurances.&lt;/li&gt;&#xA;&lt;li&gt;The v0.9.0 cross-implementation milestone is the discipline this category&amp;rsquo;s other young specs lack: a second verifier passing the same corpus, with differential CI holding them together.&lt;/li&gt;&#xA;&lt;li&gt;Integration guides exist for the stacks agents actually run in: LangGraph, an MCP guard, OpenClaw, and Cordum.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Cautions&#xA;    &lt;div id=&#34;cautions&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#cautions&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Adoption has not started&lt;/strong&gt;: 67 stars, a 1-point Show HN, and under a thousand monthly PyPI installs mean no independent deployment record speaks for the protocol.&lt;/li&gt;&#xA;&lt;li&gt;v0.9.0 was a breaking release for conformant producers (the semi_trusted trust value now fails validation), and the strict_trust default flipped to secure in the same cycle, so early embedders absorb churn.&lt;/li&gt;&#xA;&lt;li&gt;One contributor accounts for 141 of roughly 177 commits, the evidence-mode TypeScript parity is still open, and the specs themselves are drafts that become normative only at v1.0.&lt;/li&gt;&#xA;&lt;li&gt;The gate only binds callers that opt in; an agent framework that skips the verifier is outside the contract entirely.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Pricing&#xA;    &lt;div id=&#34;pricing&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#pricing&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pricing does not apply: the protocol, reference implementation, conformance corpus, and TypeScript verifier are free and Apache-2.0, verified locally with no cloud component.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Compared to&#xA;    &lt;div id=&#34;compared-to&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#compared-to&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/protocols/mcp/&#34; &gt;MCP&lt;/a&gt;: MCP is the transport that carries the tool call; PIC sits before execution and would block the call MCP would otherwise deliver, and the project ships the MCP guard integration for exactly that seam.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/protocols/uhp/&#34; &gt;Unified Harness Protocol (UHP)&lt;/a&gt;: the other young spec in this category built around a conformance suite; UHP standardizes serving harnesses, PIC standardizes refusing tool calls, and both lean on conformance corpora instead of adoption.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/control-planes/cordum/&#34; &gt;Cordum&lt;/a&gt;: the policy and approval plane above the gate; PIC verifies one proposal&amp;rsquo;s provenance and evidence, Cordum enforces policy across runs, and the integration doc wires one into the other.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Bottom line&#xA;    &lt;div id=&#34;bottom-line&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#bottom-line&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Recommended for teams building internal agent gateways where a wrong tool call costs money or data, who want a checkable verification contract today and can carry a pre-1.0 dependency.&lt;/strong&gt;&#xA;Not for teams needing an adopted standard with production references, browser or delegation lanes (A2A territory), or a gate that applies to frameworks that never call the verifier.&#xA;My disagreeable claim: this is the protocol layer agent security actually needs, which is why its non-adopter status is a market failure to watch rather than a verdict on the design.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Changes&#xA;    &lt;div id=&#34;changes&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#changes&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;2026-10-11 - Created after the control-planes resolution routed the protocol here, with the thin-footprint-versus-formal-discipline gap recorded as the critical angle.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;See also&#xA;    &lt;div id=&#34;see-also&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#see-also&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/protocols/mcp/&#34; &gt;MCP&lt;/a&gt; - the tool transport this contract gates&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/protocols/uhp/&#34; &gt;Unified Harness Protocol (UHP)&lt;/a&gt; - the other conformance-first young spec in this category&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/control-planes/cordum/&#34; &gt;Cordum&lt;/a&gt; - the control plane that consumes PIC verifications&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/protocols/protocols-feature-matrix/&#34; &gt;Protocols Feature Matrix&lt;/a&gt; - the category comparison this note joins&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;References&#xA;    &lt;div id=&#34;references&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#references&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pic-standard/pic-standard&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=github.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://github.com/pic-standard/pic-standard&lt;/a&gt; - repository facts: 67 stars, 47 forks, Apache-2.0, created 2026-01-08, pushed 2026-10-10 (GitHub API, as of 2026-10-11)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/pic-standard/pic-standard/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=raw.githubusercontent.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://raw.githubusercontent.com/pic-standard/pic-standard/main/README.md&lt;/a&gt; - the contract fields, the Slack payment example, evidence semantics, and the v0.9.0 milestone (fetched 2026-10-11)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/pic-standard/pic-standard/main/docs/spec-status.md&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=raw.githubusercontent.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://raw.githubusercontent.com/pic-standard/pic-standard/main/docs/spec-status.md&lt;/a&gt; - the version table from RFC-0001 through v0.9.0, the wire-format stability record, and the spec-track statuses&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/pic-standard/pic-standard/main/docs/independent-reviews/hermeticum-v0.8.3.md&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=raw.githubusercontent.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://raw.githubusercontent.com/pic-standard/pic-standard/main/docs/independent-reviews/hermeticum-v0.8.3.md&lt;/a&gt; - the HERMETICUM stress-test provenance note: scope, non-certification statement, and attribution&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pic-standard/pic-standard-ts&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=github.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://github.com/pic-standard/pic-standard-ts&lt;/a&gt; - the TypeScript verifier: corpus coverage for canonicalization, core, and trust sanitization, evidence mode open (GitHub API, as of 2026-10-11)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pypi.org/pypi/pic-standard/json&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=pypi.org&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://pypi.org/pypi/pic-standard/json&lt;/a&gt; - version 0.9.0 uploaded 2026-09-21&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pypistats.org/api/packages/pic-standard/recent&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=pypistats.org&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://pypistats.org/api/packages/pic-standard/recent&lt;/a&gt; - 697 downloads in the month ending 2026-10-10&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://hn.algolia.com/api/v1/search?query=%22PIC%20Standard%22%20agent&amp;amp;tags=story&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=hn.algolia.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://hn.algolia.com/api/v1/search?query=%22PIC%20Standard%22%20agent&amp;tags=story&lt;/a&gt; - the footprint scan: one 1-point Show HN (2026-01-13)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
      
    </item>
    
  </channel>
</rss>
