<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The Tinkering CISO]]></title><description><![CDATA[Security, AI, and the systems behind them…what actually works in practice.]]></description><link>https://tinkeringciso.com</link><image><url>https://substackcdn.com/image/fetch/$s_!BJZL!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a7a7364-95a2-4f03-9ea1-fe9713184844_1254x1254.png</url><title>The Tinkering CISO</title><link>https://tinkeringciso.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 28 Apr 2026 09:48:52 GMT</lastBuildDate><atom:link href="https://tinkeringciso.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Joshua Scott]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[tinkeringciso@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[tinkeringciso@substack.com]]></itunes:email><itunes:name><![CDATA[Joshua Scott]]></itunes:name></itunes:owner><itunes:author><![CDATA[Joshua Scott]]></itunes:author><googleplay:owner><![CDATA[tinkeringciso@substack.com]]></googleplay:owner><googleplay:email><![CDATA[tinkeringciso@substack.com]]></googleplay:email><googleplay:author><![CDATA[Joshua Scott]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[We don’t have a system of record for security]]></title><description><![CDATA[GTM teams solved this with CRM decades ago. Security never built the equivalent.]]></description><link>https://tinkeringciso.com/p/we-dont-have-a-system-of-record</link><guid isPermaLink="false">https://tinkeringciso.com/p/we-dont-have-a-system-of-record</guid><dc:creator><![CDATA[Joshua Scott]]></dc:creator><pubDate>Mon, 27 Apr 2026 23:21:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_acv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c7bd56-79e9-4a61-98a4-ba8760a5ae8a_2752x1536.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><p>We run a stack of tools. They tell us what we have... sometimes. They don&#8217;t tell us what we decided, what changed, or why.</p><p>Assets are in one place. Identities somewhere else. Vulns, tickets, comms, decisions, exceptions... all scattered.</p><p>So every request turns into a hunt for context about the thing involved. The asset. The identity. The repo. The vendor. Whatever the question is about.</p><p>A high-severity finding fires on a host. Where does it live? Who owns it? Is it in scope for compliance like SOC 2 or ISO 27k? Does it hold customer data? Is it actually exposed, or sitting on a private network behind two layers of controls? Has anyone looked at it before?</p><p>Five tabs and a few Slack threads later, you&#8217;ve got most of an answer.</p><p>Sometimes you don&#8217;t. Some of it isn&#8217;t written down anywhere. Some lives in someone&#8217;s head. Some never got captured.</p><p>The decision gets made anyway. Based on whatever we could find at the time. Not the full picture.</p><p>Next time a similar request comes in, we do it again.</p><h2>GTM solved this</h2><p>CRM isn&#8217;t impressive because of any specific vendor. It&#8217;s the model. Everything hangs off the customer.</p><p>One record. Every email, every call, every quote, every renewal, every lost deal. Every person who&#8217;s ever touched the account, with a timestamp and a note about what they did. Reasoning included.</p><p>A new rep can open an account, skim the timeline, and have the gist in a few minutes.</p><p>CRMs have been around for thirty-plus years. Every GTM function builds around the customer record. Sales. Marketing. Customer success. Support. And the CRM isn&#8217;t an island. It&#8217;s a hub. It integrates with hundreds of point tools. Marketing automation, sales engineering tooling, email, newsletters, custom integrations with the product itself. The CRM is the centralized platform. Everything else plugs in.</p><p>Security doesn&#8217;t have an equivalent.</p><p>Pick any entity in the environment. Try to reconstruct everything we know about it, every decision we&#8217;ve made, every conversation we&#8217;ve had, every exception we&#8217;ve granted. Good luck.</p><h2>We&#8217;ve accepted this as normal</h2><p>Two people on my team can talk to the same product or engineering person and get two slightly different answers. Neither answer gets captured anywhere reusable. Next time the question comes up, we ask again.</p><p>That&#8217;s not a tooling problem. The context lives in the conversation... then it&#8217;s gone. There&#8217;s nowhere to put it...so nobody puts it anywhere.</p><p>You could argue we have tickets. We do...but tickets are time-bound. They capture a moment, not the ongoing state of an entity. Searching across tickets related to an asset gets you fragments, not the full picture. Same scavenger hunt, different surface.</p><p>We don&#8217;t have the history. We don&#8217;t have the reasoning. We don&#8217;t have the &#8220;why we said yes&#8221; or the &#8220;why we said no last time.&#8221; Every conversation starts from zero. Every finding looks new. Every exception gets re-litigated.</p><h2>A different model</h2><p>I started thinking about the model GTM teams follow with the CRM at the center of it all, and wondered if we could apply similar logic to our stuff.</p><p>Not just assets. Identities. Systems. Services. Repos. Vendors. Anything that matters from a security standpoint, or anything in the business that touches security.</p><p>Each one is an entity. Everything ties back to it. Telemetry. Ownership. Compliance scope. Past decisions. Open and closed exceptions. The Slack thread where someone asked &#8220;should I worry about this?&#8221; two months ago. Basically anything that helps explain the who, what, when, where, why, and how.</p><p>This isn&#8217;t asset management. Asset management tells you what you have. This is the context and the relationships around it. What it&#8217;s connected to. What we&#8217;ve decided about it. What&#8217;s changed. Why.</p><p>It&#8217;s also not the source of truth for the underlying data. The systems that already own that data keep owning it. This is the source of context. The decisions. The reasoning. The conversations. The relationships we&#8217;ve inferred. Everything that lives between the records, not in them.</p><p>I think the pattern is similar to a CRM, at least from what I&#8217;ve seen of one. Central platform. Integrations into a lot of point tools. The difference is what each one is the source of truth for. A CRM owns the customer record. This owns the context layer.</p><p>&#8220;System of record&#8221; isn&#8217;t quite the right name for what this is. Source of context is closer. I haven&#8217;t landed on the right word for it.</p><p>So when something shows up and you ask &#8220;what is this thing... and should I care?&#8221; The answer is actually there. Without bouncing across five systems. Without guessing. Without making someone reconstruct context they shouldn&#8217;t have to reconstruct.</p><p>Most of our tools see one slice. EDR sees the host. IAM sees the identity. CSPM sees the cloud config. The scanner sees the CVE. None of them see the whole. And none of them see the human context. The decisions. The exceptions. The &#8220;we already looked at this and here&#8217;s why we didn&#8217;t act.&#8221;</p><p>That part doesn&#8217;t live in any tool today. It lives in someone&#8217;s head, or buried in a Slack thread nobody can find.</p><p>There&#8217;s a working model for this in another domain. AI coding agents and harnesses lean on simple markdown files for context. CLAUDE.md. AGENTS.md. Project READMEs. Plain text, tied to a directory or a repo. The agent reads the context before it does anything.</p><p>It works because context is what makes AI useful. Without it, the model is guessing. With it, the model can reason about the actual situation.</p><p>We can borrow the pattern. Per entity, captured in something humans and machines can read, tied to the thing it describes. Then humans and AI both have something to work from when a finding fires, a vendor question lands, or an exception gets requested.</p><p>This isn&#8217;t a new thought for me. I first kicked it around in 2016 or 2017. The barrier was always too high. Hiring developers for a months-long experiment wasn&#8217;t a tradeoff I could justify, and I never had the time to build it myself.</p><p>What changed is the cost of trying. AI lowers the barrier enough to actually run the experiment. Same lever I wrote about last time.</p><h2>What I&#8217;m building</h2><p>A rough version of this is already running.</p><p>We connect to the systems we already use through their APIs. Asset inventories. IAM directories. Vendor lists. GitHub. The scanners. The ticket systems. Anything that holds data about an entity or a relationship and exposes a way to read it.</p><p>Data gets pulled in. Relationships get inferred. Context gets layered on top. The conversation. The decision. The reasoning. Who owns it. What we&#8217;ve said before.</p><p>None of the source systems get replaced. We&#8217;re not building another asset inventory or another vendor list. We&#8217;re building the layer above them. The only hard requirement is that those systems have APIs we can read.</p><p>We&#8217;re still working out how to capture certain types of context, especially the human-in-the-loop kind. That&#8217;s a topic for a future post.</p><p>It&#8217;s messy. Not complete. We may scrap it. We may rebuild it from scratch. We don&#8217;t know yet what we&#8217;ll end up with. The idea is promising enough to keep building.</p><p>Even early... it&#8217;s already changing how we look at things.</p><p>Stuff that looked critical... isn&#8217;t. A &#8220;high&#8221; finding on a host that turned out to be deprecated, isolated, and unreachable from the internet is just noise. Stuff we would&#8217;ve ignored... probably matters more. A quiet permission change on an identity looks different when you can see what it&#8217;s actually connected to.</p><p>The relationships are doing a lot of the work. Take that same high finding on a host. From the host record, we can see who owns it. What business unit it belongs to. What team is responsible. Who works on it day to day. What other systems it depends on. None of that was sitting on the host record before. It comes from connecting data that already existed in different tools. With those relationships in place, &#8220;should I care, and who do I talk to?&#8221; has an actual answer.</p><p>The tools didn&#8217;t change. The findings didn&#8217;t change. We just have context now.</p><h2>Why we create work</h2><p>I <a href="https://tinkeringciso.substack.com/p/security-creates-work-lets-stop">wrote last time</a> that security creates work. This is why.</p><p>When we don&#8217;t have context, we compensate with process. More tickets. More questionnaires. More &#8220;just in case&#8221; reviews. Every conversation starts from zero, so we treat every finding like it&#8217;s the first time we&#8217;ve ever seen it. We push the work onto engineering, compliance, IT... because we don&#8217;t have a way to internalize it ourselves.</p><p>A system of record is the foundation. AI on top of context is useful. AI on top of nothing is faster slop.</p><p>Every automation I&#8217;ve talked about gets better when there&#8217;s a single place to read from and write to. Intake. Triage. Scope decisions. Vendor reviews. All of it improves the moment context stops being a thing you reconstruct.</p><p>Some of the tools my team has built are going to change. The repo-tracking tool from the last post will get replaced entirely by this. Repo scope just becomes a relationship the system renders automatically. Other tools will either integrate to feed context in, act on context, or get replaced entirely.</p><p>There&#8217;s a longer list of unanticipated benefits we&#8217;re starting to see. More on those in future posts.</p><h2>Not another tool</h2><p>There&#8217;s no shortage of related categories. CMDBs. ASMs. Risk platforms. Exposure management. None of them claim to be a security system of record. Most of them aren&#8217;t built for it either.</p><p>CMDBs come closest in concept. An entity-centric record with relationships. But the name gives it away: Configuration Management Database. The unit is the Configuration Item. The relationships it tracks are operational. What runs on what. What depends on what. Optimized for change and incident workflows, not for capturing why decisions were made or what conversations produced them. The schema is opinionated and hard to extend. Adapting it for the kind of context security needs is a project of its own.</p><p>The rest each do something useful and narrow. ASMs discover external attack footprint. Risk platforms aggregate signals to support risk prioritization. Exposure management focuses on which weaknesses are actually reachable and exploitable. All useful. None of them sit at the center the way a system of record needs to.</p><p>The hard part isn&#8217;t storing the data. It&#8217;s modeling the relationships and capturing the human context. That part is specific to how your business runs. No two businesses do security the same way. Off-the-shelf doesn&#8217;t know that we treat ephemeral build infrastructure differently from production. It doesn&#8217;t know which engineer owns which repo. It doesn&#8217;t know which exceptions we&#8217;ve already approved, or what we said to the auditor last quarter.</p><p>This is one of those build-vs-buy calls where build wins. Commercial tools are generic by necessity. They have to work across thousands of customers. You end up using maybe ten percent of what they actually do, and you still pay to train people, stand it up, and keep it running. Building it for your own context gets you exactly what you need, configured the way you actually work. Nothing more, nothing less.</p><p>That&#8217;s not something I want a vendor to define for me.</p><p>This isn&#8217;t another tool. It&#8217;s a different model.</p><p>We need a system of record for context and relationships. Something that gives us the why behind what we&#8217;re protecting, not just the what.</p><h2>Better, not perfect</h2><p>That&#8217;s what I&#8217;m working on right now.</p><p>It doesn&#8217;t have to be perfect. It just has to be better than five tabs and a Slack thread.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://tinkeringciso.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Tinkering CISO! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_acv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c7bd56-79e9-4a61-98a4-ba8760a5ae8a_2752x1536.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_acv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c7bd56-79e9-4a61-98a4-ba8760a5ae8a_2752x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_acv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c7bd56-79e9-4a61-98a4-ba8760a5ae8a_2752x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_acv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c7bd56-79e9-4a61-98a4-ba8760a5ae8a_2752x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_acv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c7bd56-79e9-4a61-98a4-ba8760a5ae8a_2752x1536.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_acv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c7bd56-79e9-4a61-98a4-ba8760a5ae8a_2752x1536.jpeg" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41c7bd56-79e9-4a61-98a4-ba8760a5ae8a_2752x1536.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1731992,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://tinkeringciso.substack.com/i/195503451?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c7bd56-79e9-4a61-98a4-ba8760a5ae8a_2752x1536.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_acv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c7bd56-79e9-4a61-98a4-ba8760a5ae8a_2752x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_acv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c7bd56-79e9-4a61-98a4-ba8760a5ae8a_2752x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_acv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c7bd56-79e9-4a61-98a4-ba8760a5ae8a_2752x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_acv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c7bd56-79e9-4a61-98a4-ba8760a5ae8a_2752x1536.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[Security creates work. Let’s stop.]]></title><description><![CDATA[Using AI to eliminate the work, not add more tools.]]></description><link>https://tinkeringciso.com/p/security-creates-work-lets-stop</link><guid isPermaLink="false">https://tinkeringciso.com/p/security-creates-work-lets-stop</guid><dc:creator><![CDATA[Joshua Scott]]></dc:creator><pubDate>Sat, 25 Apr 2026 00:15:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!BJZL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a7a7364-95a2-4f03-9ea1-fe9713184844_1254x1254.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Security creates work.</p><p>A lot of it.</p><p>A team spins up a new GitHub repo. Nobody tells us.</p><p>We find out later. Maybe much later. That repo might be in scope for compliance.</p><p>If it is, and we didn&#8217;t know it existed, both teams end up scrambling. Security has to explain why it wasn&#8217;t caught. Engineering has to reconstruct context for a repo they might not have touched in months. Under audit pressure, with a tight deadline. None of that is work anyone should be doing.</p><p>The engineers aren&#8217;t hiding anything. They&#8217;re building. They have their own deadlines and their own objectives. The old process asked them to stop what they were doing, switch context, update a Confluence page, and notify security. It&#8217;s one more thing on a long list... and it&#8217;s easy for it to fall through the cracks.</p><p>That&#8217;s not their failure. That&#8217;s ours. We built a process that depended on them remembering, and then acted surprised when they didn&#8217;t.</p><h2>By design</h2><p>That&#8217;s part of it. Most of what we do is work we create on purpose. We built it, normalized it, and call it security.</p><p>We&#8217;re the ones telling teams they&#8217;ve got vulnerabilities, weaknesses, design flaws. Even when we hand them recommendations, they still have to contextualize it, review it, figure out how it lands in their code.</p><p>Then there&#8217;s the overhead. Tickets. Reviews. Approvals. Questionnaires. Even when we&#8217;re trying to help, we&#8217;re slowing things down.</p><p>When we become the blocker, teams go around us. They ship without telling us, or they tell us late. Risk goes up, not down.</p><p>AI is the first tool we&#8217;ve had that can take things off the list, not add to it. That&#8217;s how we stop being the bottleneck.</p><h2>The job isn&#8217;t to secure everything</h2><p>The job is to help the business move forward securely.</p><p>It&#8217;s easy to lose sight of why we&#8217;re here. We&#8217;re here to help the business move forward, not to stand in its way. Doing that securely is the how. It&#8217;s not the why.</p><p>That means reducing friction, not adding more. Guardrails instead of gates. Enablement instead of enforcement.</p><p>AI isn&#8217;t the fix for this. Broken processes plus AI equals faster broken processes. If the workflow is bad, automating it just makes the bad workflow cheaper to run.</p><p>What AI actually is, is a lever.</p><p>Work that was too expensive or too time-consuming to automate is now within reach. A lot of what we&#8217;ve called &#8220;good security&#8221; was really &#8220;what was possible with the tools at hand.&#8221; AI is changing that. The question isn&#8217;t whether AI can run your program. It&#8217;s where it can take manual work off the table so the team can focus on the parts that matter. Less friction means the business moves faster.</p><p>There&#8217;s another piece of this we don&#8217;t talk about enough. Security teams aren&#8217;t staffed to do all the work our programs say needs to get done. We&#8217;re small. We were small before AI and we&#8217;re still small after. Reducing friction for engineering is the visible win. Reducing friction for our own teams is the quieter one... and it&#8217;s what makes any of this sustainable.</p><h2>What eliminating work actually looks like</h2><p>A few things my team is running or actively building right now. None of these are agents running wild. Every one keeps a human in the loop on the actual decision.</p><h3>Intake through Slack</h3><p>We have a Slack channel where teams ask us for help. &#8220;Can I use this tool?&#8221; &#8220;What do you think of this open source library?&#8221; &#8220;I need access to X.&#8221;</p><p>We&#8217;re building a bot in that channel that creates a ticket automatically when a request comes in, and in some cases just acts on it directly when the ask is something every employee is already allowed to do.</p><p>One thing I think is cool: when someone drops a link to an open source repo and asks what we think, the bot pulls the repo, does a first-pass review, and flags the things that matter. Callbacks. Remote code execution. Anything worth a closer look. The engineer gets that context up front and can make an informed call without waiting on us. The busywork of cloning the repo and looking it over is gone.</p><p>Outcome: engineers get answers faster. We spend our time on the calls that actually need judgment.</p><h3>Vulnerability triage</h3><p>Our AppSec scanners surface a lot of findings. The existing process asks engineering to triage each one, figure out if it&#8217;s real, and if so, create a Jira ticket, track it through to completion, and make sure the scanner comes back clean.</p><p>What actually happens: findings pile up. Engineers forget to triage, or they triage and forget to create the ticket, or the ticket gets created but nothing moves. We spend a lot of time on the compliance side just reconciling state.</p><p>We&#8217;re building a dashboard that pulls findings into one place with clear actions (create ticket, mark false positive, defer) and uses AI to do a first pass. AI proposes the triage. The engineer reviews and clicks. A correctly-formed Jira ticket gets created automatically, with the right context, for the ones that matter.</p><p>Outcome: engineers stop burning cycles on dead ends like a vulnerable dependency that only shows up at build time and never reaches runtime. We stop chasing. The findings that are real move faster.</p><h3>New repos, automatic</h3><p>Back to where this post opened.</p><p>We wrote a tool that detects when a new GitHub repo is created, adds it to an inventory, and opens a Jira ticket so it&#8217;s tracked and reviewed. Engineers don&#8217;t have to remember to update anything. Security doesn&#8217;t have to find out by accident.</p><p>The next piece: AI does an initial read of the repo and proposes whether it&#8217;s in scope for compliance, with a short summary for the reviewer. The human still makes the final call. If it&#8217;s in scope, a custom GitHub repo property gets set automatically to mark it. We&#8217;ve just removed every step before the decision, and the step right after.</p><p>Outcome: we know about every repo. Engineers don&#8217;t lose time on notification hygiene. Compliance scope stops being something we reconstruct after the fact.</p><h2>Start small. Stay deterministic.</h2><p>This isn&#8217;t about building agents to do everything.</p><p>To be clear on where my security team is: we haven&#8217;t released any AI agents yet. Everything we&#8217;ve shipped is deterministic automation. Coding agents helped us build it. Nothing we&#8217;ve put into production is AI making decisions. AI agents are something we&#8217;ve only started developing in the last month or two.</p><p>Start with small, scoped automations. Clear inputs, clear outputs, clear failure modes. Layer in intelligence only where it actually adds value.</p><p>Over-engineering early is how these projects die. You build something ambitious, it breaks in a weird way, the team loses trust, and you&#8217;re back to manual. Ship something small that works. Iterate.</p><h2>What this substack will focus on</h2><p>Real workflows. What actually works versus what sounds good on a slide. Building things, not just talking about them.</p><p>Going forward, more on AI and security in practice. What&#8217;s working, what isn&#8217;t, the tradeoffs worth knowing about. Occasionally a tool summary, an article worth reading, or whatever home lab experiment ends up being relevant.</p><p>Some posts will be about security leadership. How I think about running a modern program. Topics I have opinions on. Ones I&#8217;ve changed my mind on.</p><p>That&#8217;s what I&#8217;ll be covering.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TxcY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53db681f-cd73-4a68-9aaa-17919d565769_1674x939.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TxcY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53db681f-cd73-4a68-9aaa-17919d565769_1674x939.png 424w, https://substackcdn.com/image/fetch/$s_!TxcY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53db681f-cd73-4a68-9aaa-17919d565769_1674x939.png 848w, https://substackcdn.com/image/fetch/$s_!TxcY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53db681f-cd73-4a68-9aaa-17919d565769_1674x939.png 1272w, https://substackcdn.com/image/fetch/$s_!TxcY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53db681f-cd73-4a68-9aaa-17919d565769_1674x939.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TxcY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53db681f-cd73-4a68-9aaa-17919d565769_1674x939.png" width="1456" height="817" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53db681f-cd73-4a68-9aaa-17919d565769_1674x939.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:817,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1525067,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://tinkeringciso.substack.com/i/195404244?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53db681f-cd73-4a68-9aaa-17919d565769_1674x939.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TxcY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53db681f-cd73-4a68-9aaa-17919d565769_1674x939.png 424w, https://substackcdn.com/image/fetch/$s_!TxcY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53db681f-cd73-4a68-9aaa-17919d565769_1674x939.png 848w, https://substackcdn.com/image/fetch/$s_!TxcY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53db681f-cd73-4a68-9aaa-17919d565769_1674x939.png 1272w, https://substackcdn.com/image/fetch/$s_!TxcY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53db681f-cd73-4a68-9aaa-17919d565769_1674x939.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item></channel></rss>