<?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: SSX360</title>
    <description>The latest articles on DEV Community by SSX360 (@matrixscroll).</description>
    <link>https://dev.to/matrixscroll</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%2F3632581%2Fea46ced9-3ecd-48ad-b209-a235a0e9833a.jpg</url>
      <title>DEV Community: SSX360</title>
      <link>https://dev.to/matrixscroll</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/matrixscroll"/>
    <language>en</language>
    <item>
      <title>https://github.com/SSX360/matrixscroll</title>
      <dc:creator>SSX360</dc:creator>
      <pubDate>Sun, 21 Jun 2026 13:54:44 +0000</pubDate>
      <link>https://dev.to/matrixscroll/httpsgithubcomssx360matrixscroll-476n</link>
      <guid>https://dev.to/matrixscroll/httpsgithubcomssx360matrixscroll-476n</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/matrixscroll/who-actually-wrote-that-commit-you-or-your-ai-agent-513g" class="crayons-story__hidden-navigation-link"&gt;Who actually wrote that commit... you, or your AI agent?&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/matrixscroll" class="crayons-avatar  crayons-avatar--l  "&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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3632581%2Fea46ced9-3ecd-48ad-b209-a235a0e9833a.jpg" alt="matrixscroll profile" class="crayons-avatar__image" width="800" height="1422"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/matrixscroll" class="crayons-story__secondary fw-medium m:hidden"&gt;
              SSX360
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                SSX360
                
              
              &lt;div id="story-author-preview-content-3955805" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/matrixscroll" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3632581%2Fea46ced9-3ecd-48ad-b209-a235a0e9833a.jpg" class="crayons-avatar__image" alt="" width="800" height="1422"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;SSX360&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/matrixscroll/who-actually-wrote-that-commit-you-or-your-ai-agent-513g" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jun 21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/matrixscroll/who-actually-wrote-that-commit-you-or-your-ai-agent-513g" id="article-link-3955805"&gt;
          Who actually wrote that commit... you, or your AI agent?
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/security"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;security&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/git"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;git&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/matrixscroll/who-actually-wrote-that-commit-you-or-your-ai-agent-513g" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/matrixscroll/who-actually-wrote-that-commit-you-or-your-ai-agent-513g#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;



&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://github.com/SSX360/matrixscroll" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fopengraph.githubassets.com%2Fe2efa4f3da420fcd4aa383f70e57fdfdc32248bcc95809463354b7c330016500%2FSSX360%2Fmatrixscroll" height="600" class="m-0" width="1200"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://github.com/SSX360/matrixscroll" rel="noopener noreferrer" class="c-link"&gt;
            GitHub - SSX360/matrixscroll: Signed commit-time provenance for agent-assisted Git with offline verification and CI gates. · GitHub
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Signed commit-time provenance for agent-assisted Git with offline verification and CI gates. - SSX360/matrixscroll
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.githubassets.com%2Ffavicons%2Ffavicon.svg" width="32" height="32"&gt;
          github.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Who actually wrote that commit... you, or your AI agent?</title>
      <dc:creator>SSX360</dc:creator>
      <pubDate>Sun, 21 Jun 2026 12:50:02 +0000</pubDate>
      <link>https://dev.to/matrixscroll/who-actually-wrote-that-commit-you-or-your-ai-agent-513g</link>
      <guid>https://dev.to/matrixscroll/who-actually-wrote-that-commit-you-or-your-ai-agent-513g</guid>
      <description>&lt;h2&gt;
  
  
  The gap nobody's really tracking
&lt;/h2&gt;

&lt;p&gt;Your Git history can tell you that a workstation pushed a commit. What it can't tell you is who or whatactually produced the change. Was it you? An AI agent running inside your IDE? A CI job? Some vendor tool you forgot you'd wired in?&lt;/p&gt;

&lt;p&gt;For a long time that question was academic. It isn't anymore. The more code we write with AI in the loop, the shakier one quiet assumption gets: that there's a human author behind every commit. Audit trails, incident reviews, compliance workflows; they all lean on it. And it's breaking.&lt;/p&gt;

&lt;p&gt;Matrix Scroll is a small, open attempt to fix that. It attaches a signed provenance envelope to a commit, and anyone can verify it offline.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it actually does
&lt;/h2&gt;

&lt;p&gt;An agent-assisted commit can carry a signed JSON envelope that records:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the actor (human or agent)&lt;/li&gt;
&lt;li&gt;the tool that produced the change&lt;/li&gt;
&lt;li&gt;an optional bounded scope&lt;/li&gt;
&lt;li&gt;an Ed25519 signature over a canonicalized version of the manifest&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The signing input is strict and frankly kind of boring — which is the entire point. It has to be reproducible byte-for-byte across implementations, so:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the top-level signature block is stripped before signing&lt;/li&gt;
&lt;li&gt;object keys are sorted recursively&lt;/li&gt;
&lt;li&gt;compact separators, ASCII escaping, UTF-8 bytes&lt;/li&gt;
&lt;li&gt;no NaN, no Infinity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The device ID comes from the first eight uppercase hex characters of SHA-256(public_key), formatted as MS-XXXX-XXXX. Verifying is the easy part: take the canonical manifest bytes, check them against the embedded public key and signature. No central service in the middle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it without installing anything
&lt;/h2&gt;

&lt;p&gt;There's a browser verifier that runs entirely client-side. Nothing gets uploaded:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(̿▀̿‿ ̿▀̿ ̿) :    https://matrixscroll.com/verify/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Give it ten seconds:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hit &lt;strong&gt;Load Commit Envelope&lt;/strong&gt; → &lt;strong&gt;Verify Signature&lt;/strong&gt;. You'll get VALID, plus the device ID, mode, algorithm, and canonical byte count.&lt;/li&gt;
&lt;li&gt;Now hit &lt;strong&gt;Tamper Sample&lt;/strong&gt; → &lt;strong&gt;Verify Signature&lt;/strong&gt; again. It flips to INVALID and tells you exactly what broke — e.g. "Device ID mismatch: expected MS-4319-20D5, manifest says MS-TAMP-ERED".&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That round trip is basically the whole idea: a signature that genuinely fails the moment the bytes change.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding it to a repo
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"matrixscroll==0.2.6"&lt;/span&gt;
matrixscroll hook-install
matrixscroll hook-status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mark a commit as agent-produced:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;MATRIXSCROLL_ACTOR_TYPE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;agent
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;MATRIXSCROLL_TOOL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;agent-runner
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"feat: agent change"&lt;/span&gt;
matrixscroll envelope-verify &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;git rev-parse HEAD&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="c"&gt;# ok: true / actor: agent / tool: agent-runner&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Want to gate a pull request in CI? The GitHub Action ("Scroll Gate") verifies every commit in a PR range before merge:&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="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses: SSX360/matrixscroll-verify-action@v1  with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;matrixscroll-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0.2.6"&lt;/span&gt;
    &lt;span class="na"&gt;require-mode&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="c1"&gt;# ...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hooks default to warn mode. Set &lt;code&gt;"enforce": true&lt;/code&gt; in &lt;code&gt;.git/matrixscroll/config.json&lt;/code&gt; if you want failed signing to actually block.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it fits (and where it doesn't)
&lt;/h2&gt;

&lt;p&gt;This is the part I want to be straight about, because security tools earn trust by being precise about scope.&lt;/p&gt;

&lt;p&gt;Matrix Scroll is commit-time provenance. It answers one narrow question: "who signed this commit before it merged?" That's not the same question the established supply-chain tools answer.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Signs commits?&lt;/th&gt;
&lt;th&gt;Records AI/agent identity?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Matrix Scroll&lt;/td&gt;
&lt;td&gt;Commit&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sigstore / cosign&lt;/td&gt;
&lt;td&gt;Artifact&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub attestations&lt;/td&gt;
&lt;td&gt;CI artifact&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SLSA&lt;/td&gt;
&lt;td&gt;Build framework&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Sigstore, SLSA, and GitHub attestations secure build outputs — what came out of CI. They're good tools and Matrix Scroll doesn't replace any of them. It just sits one step earlier, on the commit itself.&lt;/p&gt;

&lt;p&gt;And to be clear about what it isn't: it's not IAM, not sandboxing, not a prompt filter, not an agent runtime. It's the provenance layer. That's all.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest status
&lt;/h2&gt;

&lt;p&gt;Here's where things actually stand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shipping now:&lt;/strong&gt; PyPI 0.2.6, the Git hooks, the browser verifier, and PR-range verification via the GitHub Action.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In progress:&lt;/strong&gt; hardware-backed signing on a dedicated secure element (SE050), external Ed25519 key backends, and transparency-log integration.&lt;/p&gt;

&lt;p&gt;The default today uses software-emulated keys — an "L1" mode — meant for local dev, demos, and CI. Hardware-rooted keys are the next trust layer, not the thing I'm leading with.&lt;/p&gt;

&lt;p&gt;So if your threat model includes a fully compromised local machine, the emulated path won't save you yet. That's exactly what the hardware work is for. I'd rather just say that than oversell it.&lt;/p&gt;

&lt;p&gt;The protocol, JSON schemas, and conformance vectors are all open, so anyone can implement the format or pick it apart.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Spec: &lt;a href="https://matrixscroll.com/spec/" rel="noopener noreferrer"&gt;https://matrixscroll.com/spec/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Verifier: &lt;a href="https://matrixscroll.com/verify/" rel="noopener noreferrer"&gt;https://matrixscroll.com/verify/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Comparison vs Sigstore/SLSA/peers: &lt;a href="https://matrixscroll.com/compare/" rel="noopener noreferrer"&gt;https://matrixscroll.com/compare/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/SSX360/matrixscroll" rel="noopener noreferrer"&gt;https://github.com/SSX360/matrixscroll&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you've thought about provenance for AI-assisted code or you think the commit is the wrong layer to solve this at I'd genuinely like to hear it in the comments.&lt;/p&gt;

&lt;p&gt;fin.&lt;/p&gt;

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