<?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[GRC Engineering Community Blog]]></title><description><![CDATA[The GRC Engineering Community Blog covers topics covering the full gamut of GRC Engineering values, principles, and the fundamental problems with traditional GRC that its meant to solve]]></description><link>https://blog.grc.engineering</link><image><url>https://substackcdn.com/image/fetch/$s_!QUtD!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd28706-d98f-4eff-90c8-90076d0f2b6c_1280x1280.png</url><title>GRC Engineering Community Blog</title><link>https://blog.grc.engineering</link></image><generator>Substack</generator><lastBuildDate>Sun, 10 May 2026 12:12:31 GMT</lastBuildDate><atom:link href="https://blog.grc.engineering/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Justin Pagano]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[grceng@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[grceng@substack.com]]></itunes:email><itunes:name><![CDATA[Justin Pagano]]></itunes:name></itunes:owner><itunes:author><![CDATA[Justin Pagano]]></itunes:author><googleplay:owner><![CDATA[grceng@substack.com]]></googleplay:owner><googleplay:email><![CDATA[grceng@substack.com]]></googleplay:email><googleplay:author><![CDATA[Justin Pagano]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Automating Trust as a Business Enabler: From Compliance Gate to Growth Engine]]></title><description><![CDATA[Compliance is either a gate that slows deals down or infrastructure that scales trust automatically. You're building one or the other.]]></description><link>https://blog.grc.engineering/p/automating-trust-as-a-business-enabler</link><guid isPermaLink="false">https://blog.grc.engineering/p/automating-trust-as-a-business-enabler</guid><dc:creator><![CDATA[Chad Fryer]]></dc:creator><pubDate>Wed, 28 Jan 2026 17:20:02 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8b7de5b8-5a5b-4178-b7b9-624954b750bb_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In Part 1, we talked about using customer trust intelligence to shape your compliance roadmap. But knowing what to build is only half the challenge. The other half is delivering trust at scale without becoming a bottleneck.</p><p>This is where most GRC programs stall. They build the right capabilities, earn the certifications, develop the policies&#8212;and then bury it all behind manual processes that frustrate customers and drain internal resources.</p><p>The fix isn&#8217;t hiring more people to answer security questionnaires faster. It&#8217;s rethinking how trust gets delivered.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rJy6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3341baf-f479-4667-b2ce-017ba342594b_2068x1082.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rJy6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3341baf-f479-4667-b2ce-017ba342594b_2068x1082.heic 424w, https://substackcdn.com/image/fetch/$s_!rJy6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3341baf-f479-4667-b2ce-017ba342594b_2068x1082.heic 848w, https://substackcdn.com/image/fetch/$s_!rJy6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3341baf-f479-4667-b2ce-017ba342594b_2068x1082.heic 1272w, https://substackcdn.com/image/fetch/$s_!rJy6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3341baf-f479-4667-b2ce-017ba342594b_2068x1082.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rJy6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3341baf-f479-4667-b2ce-017ba342594b_2068x1082.heic" width="1456" height="762" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f3341baf-f479-4667-b2ce-017ba342594b_2068x1082.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:762,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:76236,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184483997?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3341baf-f479-4667-b2ce-017ba342594b_2068x1082.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rJy6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3341baf-f479-4667-b2ce-017ba342594b_2068x1082.heic 424w, https://substackcdn.com/image/fetch/$s_!rJy6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3341baf-f479-4667-b2ce-017ba342594b_2068x1082.heic 848w, https://substackcdn.com/image/fetch/$s_!rJy6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3341baf-f479-4667-b2ce-017ba342594b_2068x1082.heic 1272w, https://substackcdn.com/image/fetch/$s_!rJy6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3341baf-f479-4667-b2ce-017ba342594b_2068x1082.heic 1456w" sizes="100vw" fetchpriority="high"></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><h2>The Bottleneck Problem</h2><p>Picture the typical enterprise sales cycle. A prospect is interested. They&#8217;ve seen the demo, liked the product, and have budget. Then procurement sends over a 300-question security questionnaire. Or they ask for your SOC 2 report. Or they want to schedule a call with your security team.</p><p>What happens next determines whether compliance is a gate or an enabler.</p><p>In the gate model, the request lands in someone&#8217;s inbox. Maybe it&#8217;s a GRC analyst, maybe it&#8217;s a sales engineer, maybe it&#8217;s whoever answered the last one. They dig through folders to find the latest documents. They copy-paste answers from previous questionnaires, hoping the information is still accurate. They wait for approvals. Days pass. The prospect&#8217;s enthusiasm cools. Competitors who respond faster gain an edge.</p><p>This model doesn&#8217;t scale. Every new customer means more manual work. Every certification you add means more documents to manage and more questions to answer. Growth becomes a burden on the compliance team instead of a victory.</p><h2>The Infrastructure Model</h2><p>The alternative is treating trust delivery as infrastructure&#8212;systems that serve customers automatically, consistently, and instantly.</p><p>This isn&#8217;t about replacing humans with bots. It&#8217;s about removing humans from tasks that don&#8217;t require human judgment, so they can focus on work that does.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pnVs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf50ef9a-def9-490d-a14b-efa30371ff1c_2068x1315.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pnVs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf50ef9a-def9-490d-a14b-efa30371ff1c_2068x1315.heic 424w, https://substackcdn.com/image/fetch/$s_!pnVs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf50ef9a-def9-490d-a14b-efa30371ff1c_2068x1315.heic 848w, https://substackcdn.com/image/fetch/$s_!pnVs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf50ef9a-def9-490d-a14b-efa30371ff1c_2068x1315.heic 1272w, https://substackcdn.com/image/fetch/$s_!pnVs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf50ef9a-def9-490d-a14b-efa30371ff1c_2068x1315.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pnVs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf50ef9a-def9-490d-a14b-efa30371ff1c_2068x1315.heic" width="1456" height="926" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf50ef9a-def9-490d-a14b-efa30371ff1c_2068x1315.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:926,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:120859,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184483997?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf50ef9a-def9-490d-a14b-efa30371ff1c_2068x1315.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pnVs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf50ef9a-def9-490d-a14b-efa30371ff1c_2068x1315.heic 424w, https://substackcdn.com/image/fetch/$s_!pnVs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf50ef9a-def9-490d-a14b-efa30371ff1c_2068x1315.heic 848w, https://substackcdn.com/image/fetch/$s_!pnVs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf50ef9a-def9-490d-a14b-efa30371ff1c_2068x1315.heic 1272w, https://substackcdn.com/image/fetch/$s_!pnVs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf50ef9a-def9-490d-a14b-efa30371ff1c_2068x1315.heic 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><strong>Self-service trust centers.</strong> Instead of emailing documents on request, publish them where customers can access them directly. SOC 2 reports, penetration test summaries, compliance certifications, security whitepapers&#8212;all available behind a simple NDA click-through. Prospects get what they need instantly. Your team doesn&#8217;t lift a finger.</p><p><strong>Automated evidence collection.</strong> The bane of audit prep is chasing screenshots and exports from a dozen different systems. Automate that. Pull user access reviews from your identity provider. Pull vulnerability scan results from your security tools. Pull change management records from your ticketing system. When audit season arrives, the evidence is already there.</p><p><strong>Real-time compliance posture.</strong> Point-in-time audits are table stakes. The next level is continuous monitoring&#8212;dashboards that show your current compliance state, flag drift before it becomes a finding, and give customers confidence that you&#8217;re not just compliant once a year but compliant right now.</p><p><strong>Intelligent questionnaire response.</strong> Security questionnaires are repetitive by design. Most questions map to the same underlying controls. Build a knowledge base of your canonical answers, tagged by control and framework. Use it to auto-populate responses, then have humans review and customize. What took days now takes hours.</p><h2>The GRC Engineering Mindset</h2><p>This shift requires a different way of thinking about compliance work. Traditional GRC is document-centric: policies, procedures, evidence binders, audit reports. Automated GRC is system-centric: integrations, workflows, data pipelines, APIs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8LFp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac723d1-c995-4f82-adf9-ceee2ee5f597_2068x1032.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8LFp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac723d1-c995-4f82-adf9-ceee2ee5f597_2068x1032.heic 424w, https://substackcdn.com/image/fetch/$s_!8LFp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac723d1-c995-4f82-adf9-ceee2ee5f597_2068x1032.heic 848w, https://substackcdn.com/image/fetch/$s_!8LFp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac723d1-c995-4f82-adf9-ceee2ee5f597_2068x1032.heic 1272w, https://substackcdn.com/image/fetch/$s_!8LFp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac723d1-c995-4f82-adf9-ceee2ee5f597_2068x1032.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8LFp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac723d1-c995-4f82-adf9-ceee2ee5f597_2068x1032.heic" width="1456" height="727" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ac723d1-c995-4f82-adf9-ceee2ee5f597_2068x1032.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:727,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:61871,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184483997?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac723d1-c995-4f82-adf9-ceee2ee5f597_2068x1032.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8LFp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac723d1-c995-4f82-adf9-ceee2ee5f597_2068x1032.heic 424w, https://substackcdn.com/image/fetch/$s_!8LFp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac723d1-c995-4f82-adf9-ceee2ee5f597_2068x1032.heic 848w, https://substackcdn.com/image/fetch/$s_!8LFp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac723d1-c995-4f82-adf9-ceee2ee5f597_2068x1032.heic 1272w, https://substackcdn.com/image/fetch/$s_!8LFp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac723d1-c995-4f82-adf9-ceee2ee5f597_2068x1032.heic 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>That doesn&#8217;t mean everyone on the GRC team needs to become a software engineer. But it does mean thinking like one:</p><p><strong>Build once, use many times.</strong> Every time you manually generate a report or answer a question, ask whether that task could be automated. If you&#8217;ll do it more than twice, it&#8217;s worth systematizing.</p><p><strong>Treat compliance data as a product.</strong> Your evidence, your control status, your certification records&#8212;these have consumers, both internal and external. Design how that data flows with the same care you&#8217;d design a customer-facing feature.</p><p><strong>Version control your artifacts.</strong> Policies change. Controls evolve. Evidence gets updated. If you can&#8217;t trace what was true at a specific point in time, you&#8217;ll struggle in audits and incident response. Treat your compliance artifacts like code: versioned, reviewable, auditable.</p><p><strong>Measure cycle time.</strong> How long does it take to respond to a security questionnaire? To produce evidence for an auditor? To onboard a new vendor? These are your compliance SLAs. Track them, set targets, and improve systematically.</p><h2>The Business Case</h2><p>Automation isn&#8217;t just about efficiency&#8212;though the efficiency gains are real. A GRC team that automates well can support 10x the customer base without 10x the headcount. That&#8217;s leverage.</p><p>But the bigger win is speed. In competitive deals, the vendor who delivers trust artifacts fastest often wins. When a prospect can self-serve your SOC 2 report at 10pm on a Sunday, you&#8217;re not waiting until Monday for someone to find it and email it over. When questionnaire responses come back in hours instead of weeks, you&#8217;re demonstrating operational maturity that reinforces the trust you&#8217;re trying to establish.</p><p>Speed also compounds internally. When evidence collection is automated, audit prep shrinks from a multi-week scramble to a routine process. When compliance posture is visible in real-time, you catch issues early instead of discovering them during the audit. When policies and controls are systematized, onboarding new team members takes days instead of months.</p><h2>Getting Started</h2><p>You don&#8217;t need to automate everything at once. Start with the highest-friction, highest-volume pain points:</p><p><strong>If security questionnaires are killing you:</strong> Build a response library. Map your most common questions to canonical answers. Even a well-organized spreadsheet is a 10x improvement over starting from scratch each time.</p><p><strong>If document requests are constant:</strong> Stand up a basic trust center. It can be as simple as a password-protected page with your key documents. Upgrade to a proper portal when volume justifies it.</p><p><strong>If audit prep is a fire drill:</strong> Identify your most painful evidence items and automate those first. User access reviews and vulnerability scans are often quick wins because the data already exists in systems with APIs.</p><p><strong>If you&#8217;re not sure where to start:</strong> Instrument what you have. Track how long things take. Follow the pain. The data will tell you where automation has the highest ROI.</p><h2>Trust at Scale</h2><p>The companies that win on trust in the next decade won&#8217;t be the ones with the most certifications on their website. They&#8217;ll be the ones who deliver trust effortlessly&#8212;to customers, to auditors, to partners, to regulators.</p><p>That requires treating compliance not as a periodic checkbox exercise, but as operational infrastructure. It requires building systems that scale. It requires the GRC Engineering mindset.</p><p>In Part 1, we talked about listening to customers to know what trust capabilities to build. In Part 2, we&#8217;ve covered how to deliver those capabilities at scale. Together, they form a model for GRC that isn&#8217;t just a cost center or a necessary evil&#8212;but a genuine competitive advantage.</p><p>The technology exists. The patterns are proven. The question is whether your compliance program is ready to make the shift.</p><div><hr></div><p><em>This is Part 2 of a two-part series on building trust as a business enabler. Read Part 1: &#8220;Customer Trust as a Compass&#8221; for how to use sales partnership to shape your compliance roadmap.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.grc.engineering/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 GRC Engineering Community Blog! 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>]]></content:encoded></item><item><title><![CDATA[Customer Trust as a Compass: Why Your Sales Team Should Shape Your Compliance Roadmap]]></title><description><![CDATA[Your sales team knows what customers need to feel confident. The question is whether your compliance roadmap is listening.]]></description><link>https://blog.grc.engineering/p/customer-trust-as-a-compass-why-your</link><guid isPermaLink="false">https://blog.grc.engineering/p/customer-trust-as-a-compass-why-your</guid><dc:creator><![CDATA[Chad Fryer]]></dc:creator><pubDate>Mon, 26 Jan 2026 16:55:57 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/eb12e71f-d99a-429d-a3a5-72f0b5e05884_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most compliance roadmaps are built backwards.</p><p>They start with a framework&#8212;SOC 2, ISO 27001, GDPR&#8212;and work inward. The logic seems sound: pick a standard, map the controls, close the gaps, get certified. Rinse and repeat for the next framework on the list.</p><p>But here&#8217;s the problem: that approach treats compliance as an internal exercise. It optimizes for auditors, not customers. And in a world where trust is a competitive differentiator, that&#8217;s a costly mistake.</p><p>The companies winning on trust aren&#8217;t just checking boxes. They&#8217;re listening to what their customers actually need&#8212;and building compliance programs that deliver it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!of5M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3be052d-29b0-431d-bd9f-14ba6587cc5d_2068x1034.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!of5M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3be052d-29b0-431d-bd9f-14ba6587cc5d_2068x1034.heic 424w, https://substackcdn.com/image/fetch/$s_!of5M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3be052d-29b0-431d-bd9f-14ba6587cc5d_2068x1034.heic 848w, https://substackcdn.com/image/fetch/$s_!of5M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3be052d-29b0-431d-bd9f-14ba6587cc5d_2068x1034.heic 1272w, https://substackcdn.com/image/fetch/$s_!of5M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3be052d-29b0-431d-bd9f-14ba6587cc5d_2068x1034.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!of5M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3be052d-29b0-431d-bd9f-14ba6587cc5d_2068x1034.heic" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e3be052d-29b0-431d-bd9f-14ba6587cc5d_2068x1034.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:75313,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184482017?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3be052d-29b0-431d-bd9f-14ba6587cc5d_2068x1034.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!of5M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3be052d-29b0-431d-bd9f-14ba6587cc5d_2068x1034.heic 424w, https://substackcdn.com/image/fetch/$s_!of5M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3be052d-29b0-431d-bd9f-14ba6587cc5d_2068x1034.heic 848w, https://substackcdn.com/image/fetch/$s_!of5M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3be052d-29b0-431d-bd9f-14ba6587cc5d_2068x1034.heic 1272w, https://substackcdn.com/image/fetch/$s_!of5M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3be052d-29b0-431d-bd9f-14ba6587cc5d_2068x1034.heic 1456w" sizes="100vw" fetchpriority="high"></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><h2>The Intelligence Gap</h2><p>Your sales and customer success teams talk to prospects and customers every day. They hear the objections, field the security questionnaires, and sit through the procurement reviews. They know exactly where deals stall, which competitors are winning on trust, and what certifications actually move the needle in your market.</p><p>That&#8217;s gold. And most GRC teams never see it.</p><p>Instead, compliance priorities get set in a vacuum. Leadership picks the next certification based on industry trends, analyst reports, or whatever the last lost deal mentioned in passing. The GRC team disappears for six months to implement it. Sales keeps struggling with the same objections. Everyone wonders why the new certification didn&#8217;t magically fix pipeline velocity.</p><p>The disconnect isn&#8217;t malicious&#8212;it&#8217;s structural. GRC teams are buried in control implementation and audit prep. Sales teams are focused on quota. Nobody&#8217;s job is to connect the dots.</p><p>Until you make it someone&#8217;s job.</p><h2>Building the Feedback Loop</h2><p>The fix isn&#8217;t complicated, but it requires intentionality. You need a consistent mechanism for customer trust intelligence to flow into your compliance planning process.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kBYO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F564800aa-ef59-4f6b-be96-4777337028bb_2068x1163.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kBYO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F564800aa-ef59-4f6b-be96-4777337028bb_2068x1163.heic 424w, https://substackcdn.com/image/fetch/$s_!kBYO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F564800aa-ef59-4f6b-be96-4777337028bb_2068x1163.heic 848w, https://substackcdn.com/image/fetch/$s_!kBYO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F564800aa-ef59-4f6b-be96-4777337028bb_2068x1163.heic 1272w, https://substackcdn.com/image/fetch/$s_!kBYO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F564800aa-ef59-4f6b-be96-4777337028bb_2068x1163.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kBYO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F564800aa-ef59-4f6b-be96-4777337028bb_2068x1163.heic" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/564800aa-ef59-4f6b-be96-4777337028bb_2068x1163.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:79648,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184482017?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F564800aa-ef59-4f6b-be96-4777337028bb_2068x1163.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kBYO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F564800aa-ef59-4f6b-be96-4777337028bb_2068x1163.heic 424w, https://substackcdn.com/image/fetch/$s_!kBYO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F564800aa-ef59-4f6b-be96-4777337028bb_2068x1163.heic 848w, https://substackcdn.com/image/fetch/$s_!kBYO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F564800aa-ef59-4f6b-be96-4777337028bb_2068x1163.heic 1272w, https://substackcdn.com/image/fetch/$s_!kBYO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F564800aa-ef59-4f6b-be96-4777337028bb_2068x1163.heic 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><strong>Start with the friction points.</strong> Work with sales leadership to identify where trust-related objections are killing or stalling deals. Not anecdotes&#8212;data. Which questions come up repeatedly in security reviews? Which certifications do prospects ask about that you don&#8217;t have? Where are you losing to competitors on compliance posture?</p><p><strong>Categorize the asks.</strong> Not every customer request deserves a six-month implementation project. Some needs can be addressed with better documentation or a clearer explanation of existing controls. Others require net-new capabilities. Understanding the difference prevents overengineering and helps you move faster on quick wins.</p><p><strong>Prioritize by business impact.</strong> This is where GRC earns its seat at the table. Frame compliance investments in terms of revenue enabled, deals unblocked, or market segments unlocked. A certification that opens up enterprise or regulated industry sales is a different conversation than one that checks a theoretical box.</p><p><strong>Close the loop.</strong> When you ship a compliance capability that came from customer feedback, tell the sales team. Let them know what&#8217;s now available, how to position it, and where to find the evidence. This builds trust in the partnership and encourages more intelligence sharing.</p><h2>From Cost Center to Growth Engine</h2><p>The traditional view of compliance is defensive: avoid fines, pass audits, don&#8217;t get breached. That framing makes GRC a cost center&#8212;necessary but not strategic.</p><p>Customer-driven compliance flips the script.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pE-6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc58f0d-6172-423c-8a45-2c276807efec_2068x982.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pE-6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc58f0d-6172-423c-8a45-2c276807efec_2068x982.heic 424w, https://substackcdn.com/image/fetch/$s_!pE-6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc58f0d-6172-423c-8a45-2c276807efec_2068x982.heic 848w, https://substackcdn.com/image/fetch/$s_!pE-6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc58f0d-6172-423c-8a45-2c276807efec_2068x982.heic 1272w, https://substackcdn.com/image/fetch/$s_!pE-6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc58f0d-6172-423c-8a45-2c276807efec_2068x982.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pE-6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc58f0d-6172-423c-8a45-2c276807efec_2068x982.heic" width="1456" height="691" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/adc58f0d-6172-423c-8a45-2c276807efec_2068x982.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:691,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:50452,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184482017?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc58f0d-6172-423c-8a45-2c276807efec_2068x982.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pE-6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc58f0d-6172-423c-8a45-2c276807efec_2068x982.heic 424w, https://substackcdn.com/image/fetch/$s_!pE-6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc58f0d-6172-423c-8a45-2c276807efec_2068x982.heic 848w, https://substackcdn.com/image/fetch/$s_!pE-6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc58f0d-6172-423c-8a45-2c276807efec_2068x982.heic 1272w, https://substackcdn.com/image/fetch/$s_!pE-6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc58f0d-6172-423c-8a45-2c276807efec_2068x982.heic 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>When your roadmap is shaped by real customer needs, every compliance investment has a clear line to revenue. You&#8217;re not just reducing risk; you&#8217;re removing friction from the sales process. You&#8217;re not just satisfying auditors; you&#8217;re satisfying buyers.</p><p>This changes how the business sees the GRC function. Instead of the team that says &#8220;no&#8221; or slows things down, you become the team that helps close deals. Instead of a budget line item to minimize, you become an investment with measurable returns.</p><p>That shift doesn&#8217;t happen overnight, and it doesn&#8217;t happen by accident. It requires GRC leaders to step out of the audit prep mindset and engage with the commercial side of the business.</p><h2>The Partnership Model in Practice</h2><p>What does this look like day-to-day?</p><p>It means GRC has a regular sync with sales leadership&#8212;not to review security questionnaire responses, but to discuss pipeline trends and trust-related blockers. It means someone from the compliance team occasionally joins customer calls during procurement reviews, not to answer questions on the spot but to hear what customers actually care about.</p><p>It means treating RFPs and security questionnaires as market research, not just administrative burden. Every question a prospect asks is a data point about what the market values. Aggregate enough of those data points and patterns emerge.</p><p>It means sharing your compliance roadmap with sales before it&#8217;s finalized, and actually incorporating their feedback. They might not understand the technical details of control implementation, but they understand which capabilities would help them sell.</p><p>And it means measuring success differently. Audit outcomes still matter, but so do metrics like: time to complete security reviews, win rate on deals with compliance requirements, and customer satisfaction with your trust posture.</p><h2>Trust Is the Product</h2><p>Here&#8217;s the mindset shift that ties it all together: in B2B SaaS, trust isn&#8217;t a byproduct of your product&#8212;it <em>is</em> your product.</p><p>Customers aren&#8217;t just buying your features. They&#8217;re buying confidence that their data is safe, that you&#8217;ll meet your commitments, and that doing business with you won&#8217;t create liability for them. The companies that understand this don&#8217;t bolt compliance on as an afterthought. They build it into how they operate, how they sell, and how they prioritize.</p><p>Your sales team is on the front lines of that trust exchange. They know what customers need to feel confident. The question is whether your compliance program is listening.</p><div><hr></div><p><em>This is Part 1 of a two-part series on building trust as a business enabler. In Part 2, we&#8217;ll explore how to operationalize customer trust at scale&#8212;automating evidence delivery, building self-service trust infrastructure, and turning compliance from a gate into a growth engine.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.grc.engineering/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 GRC Engineering Community Blog! 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>]]></content:encoded></item><item><title><![CDATA[Experience GigaChad GRC in 60 Seconds: One-Click Demo Data for Instant Platform Evaluation]]></title><description><![CDATA[The GRC Software Evaluation Problem]]></description><link>https://blog.grc.engineering/p/experience-gigachad-grc-in-60-seconds</link><guid isPermaLink="false">https://blog.grc.engineering/p/experience-gigachad-grc-in-60-seconds</guid><dc:creator><![CDATA[Chad Fryer]]></dc:creator><pubDate>Wed, 21 Jan 2026 16:55:17 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b2f6e37b-2329-408a-8282-ea3cda3f9383_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1><strong>The GRC Software Evaluation Problem</strong></h1><p>You&#8217;ve heard about a new GRC platform. The features sound promising. The screenshots look compelling. But then comes the inevitable friction:</p><p><em>&#8220;Schedule a demo with our sales team.&#8221;</em></p><p><em>&#8220;Sign up for a 14-day trial and spend 3 hours configuring it.&#8221;</em></p><p><em>&#8220;Create 50 test records before you can see how the dashboards actually work.&#8221;</em></p><p>For busy security and compliance professionals, this is a non-starter. You don&#8217;t have hours to invest before you can evaluate whether a tool fits your workflow. You need to see the platform in action&#8212;with real-looking data, real relationships between records, and real dashboards that tell a story.</p><p>That&#8217;s exactly why we built <strong>one-click demo data</strong> into GigaChad GRC.</p><div><hr></div><h2><strong>Introducing Demo Data: A Complete GRC Environment in Seconds</strong></h2><p>When you fork or clone GigaChad GRC, you&#8217;re not starting with a blank slate and wondering &#8220;now what?&#8221; With a single click, you can populate your instance with a comprehensive, realistic GRC environment:</p><p><strong>50+ Security Controls</strong> mapped to frameworks, with varied implementation statuses so you can see what &#8220;in progress&#8221; vs. &#8220;implemented&#8221; actually looks like in the interface.</p><p><strong>Full Framework Hierarchies</strong> including SOC 2 Type II and ISO 27001:2022 with their complete requirement structures&#8212;not just names, but descriptions, guidance, and proper parent-child relationships.</p><p><strong>20 Realistic Vendors</strong> spanning categories from cloud infrastructure (AWS) to HR systems (ADP) to communication tools (Slack), each with appropriate risk tiers and completed security assessments.</p><p><strong>25 Documented Risks</strong> across technical, operational, and compliance categories, complete with impact and likelihood ratings that make the risk heatmap actually useful to evaluate.</p><p><strong>100+ Evidence Items</strong> linked to controls, showing how document management and evidence collection works in practice.</p><p><strong>50 Employees</strong> with training records, background check statuses, and compliance metrics&#8212;because GRC isn&#8217;t just about technology.</p><p>This isn&#8217;t lorem ipsum data. It&#8217;s a thoughtfully constructed environment that mirrors what a real organization&#8217;s GRC program looks like.</p><div><hr></div><h2><strong>Three Ways to Access Demo Data</strong></h2><p>We believe in meeting users where they are. That&#8217;s why demo data is accessible through multiple methods:</p><p><strong>1. The Onboarding Banner</strong></p><p>First-time users with an empty organization see a friendly welcome banner with a prominent <strong>&#8220;Try with Demo Data&#8221;</strong> button. One click. That&#8217;s it. The platform populates while you wait, and you&#8217;re exploring real workflows within a minute.</p><p><strong>2. Settings Page</strong></p><p>Prefer to poke around first? No problem. Navigate to <strong>Settings &#8594; Organization &#8594; Demo Data</strong> whenever you&#8217;re ready. The interface shows exactly what will be created before you commit, and a progress indicator keeps you informed during the load.</p><p><strong>3. API Endpoint</strong></p><p>For developers, CI/CD pipelines, or automated testing environments:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NWeN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a45589-4d0a-400f-8ea5-967f221f215f_454x118.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NWeN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a45589-4d0a-400f-8ea5-967f221f215f_454x118.heic 424w, https://substackcdn.com/image/fetch/$s_!NWeN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a45589-4d0a-400f-8ea5-967f221f215f_454x118.heic 848w, https://substackcdn.com/image/fetch/$s_!NWeN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a45589-4d0a-400f-8ea5-967f221f215f_454x118.heic 1272w, https://substackcdn.com/image/fetch/$s_!NWeN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a45589-4d0a-400f-8ea5-967f221f215f_454x118.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NWeN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a45589-4d0a-400f-8ea5-967f221f215f_454x118.heic" width="454" height="118" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/79a45589-4d0a-400f-8ea5-967f221f215f_454x118.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:118,&quot;width&quot;:454,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:11944,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184480322?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a45589-4d0a-400f-8ea5-967f221f215f_454x118.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NWeN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a45589-4d0a-400f-8ea5-967f221f215f_454x118.heic 424w, https://substackcdn.com/image/fetch/$s_!NWeN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a45589-4d0a-400f-8ea5-967f221f215f_454x118.heic 848w, https://substackcdn.com/image/fetch/$s_!NWeN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a45589-4d0a-400f-8ea5-967f221f215f_454x118.heic 1272w, https://substackcdn.com/image/fetch/$s_!NWeN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a45589-4d0a-400f-8ea5-967f221f215f_454x118.heic 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>The API returns a detailed breakdown of every record created, making it easy to verify your environment is ready for whatever you&#8217;re building.</p><div><hr></div><h2><strong>Zero Configuration Required</strong></h2><p>Here&#8217;s the complete process to go from &#8220;I&#8217;ve never seen this repo&#8221; to &#8220;I&#8217;m clicking through a fully-populated GRC platform&#8221;:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1_ZG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae1da8e-56e7-4230-a84b-2d437f71f9cb_441x114.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1_ZG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae1da8e-56e7-4230-a84b-2d437f71f9cb_441x114.heic 424w, https://substackcdn.com/image/fetch/$s_!1_ZG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae1da8e-56e7-4230-a84b-2d437f71f9cb_441x114.heic 848w, https://substackcdn.com/image/fetch/$s_!1_ZG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae1da8e-56e7-4230-a84b-2d437f71f9cb_441x114.heic 1272w, https://substackcdn.com/image/fetch/$s_!1_ZG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae1da8e-56e7-4230-a84b-2d437f71f9cb_441x114.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1_ZG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae1da8e-56e7-4230-a84b-2d437f71f9cb_441x114.heic" width="441" height="114" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dae1da8e-56e7-4230-a84b-2d437f71f9cb_441x114.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:114,&quot;width&quot;:441,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8549,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184480322?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae1da8e-56e7-4230-a84b-2d437f71f9cb_441x114.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1_ZG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae1da8e-56e7-4230-a84b-2d437f71f9cb_441x114.heic 424w, https://substackcdn.com/image/fetch/$s_!1_ZG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae1da8e-56e7-4230-a84b-2d437f71f9cb_441x114.heic 848w, https://substackcdn.com/image/fetch/$s_!1_ZG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae1da8e-56e7-4230-a84b-2d437f71f9cb_441x114.heic 1272w, https://substackcdn.com/image/fetch/$s_!1_ZG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdae1da8e-56e7-4230-a84b-2d437f71f9cb_441x114.heic 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>That&#8217;s three commands. Docker handles the infrastructure. The start script waits for services to be healthy. Your browser opens automatically. Click <strong>&#8220;Dev Login&#8221;</strong> (no password needed in demo mode), hit <strong>&#8220;Load Demo Data&#8221;</strong>, and you&#8217;re exploring.</p><p>No environment variables to configure. No database migrations to run manually. No seed scripts to hunt down. No YAML files to edit.</p><p>The entire experience is designed around one principle: <strong>reduce time-to-value to near zero.</strong></p><div><hr></div><h2><strong>Real Scenarios, Not Placeholder Text</strong></h2><p>What makes demo data truly useful is that it enables you to evaluate real workflows:</p><p><strong>Scenario: Control Implementation Tracking</strong></p><p>Navigate to the Controls module. You&#8217;ll see controls in various states&#8212;some fully implemented with linked evidence, others marked as &#8220;in progress&#8221; with partial documentation, and a few that haven&#8217;t been started. Filter by status. Assign an owner. Link evidence. This is exactly what your team would do day-to-day.</p><p><strong>Scenario: Vendor Risk Assessment</strong></p><p>Open the TPRM module. Browse vendors by risk tier. Click into a vendor to see their completed assessment, contract details, and associated risks. Add a note. Trigger a reassessment. The workflow feels familiar because it mirrors real vendor management.</p><p><strong>Scenario: Compliance Gap Analysis</strong></p><p>Check the Framework module. See SOC 2 requirements alongside their mapped controls. Identify which requirements have full coverage, which have partial coverage, and which have gaps. Export a gap report. This is audit prep in action.</p><p><strong>Scenario: Risk Heatmap Evaluation</strong></p><p>Visit the Risk Dashboard. The heatmap is populated with risks distributed across likelihood and impact dimensions. Click a cell to drill into specific risks. Evaluate treatment options. See how the overall risk posture changes as you mark risks as mitigated.</p><p>These aren&#8217;t contrived examples&#8212;they&#8217;re the actual daily workflows of GRC professionals, and demo data lets you experience them immediately.</p><div><hr></div><h2><strong>When You&#8217;re Ready: Clean Reset</strong></h2><p>Demo data is explicitly marked throughout the interface with a purple &#8220;Demo Mode Active&#8221; banner. There&#8217;s no confusion about what&#8217;s real and what&#8217;s sample data.</p><p>When you&#8217;re ready to move to production:</p><ol><li><p>Navigate to <strong>Settings &#8594; Organization &#8594; Demo Data</strong></p></li><li><p>Click <strong>&#8220;Reset All Data&#8221;</strong></p></li><li><p>Type the confirmation phrase</p></li><li><p>Your organization is now a clean slate, ready for your real compliance program</p></li></ol><p>User accounts, organization settings, and system configuration are preserved. Only the sample records are removed.</p><div><hr></div><h2><strong>Built for Evaluators, Developers, and Contributors</strong></h2><p><strong>For Evaluators:</strong> Stop wasting time on sales calls and configuration. Clone the repo, run the script, click the button. In under five minutes, you&#8217;ll know whether GigaChad GRC fits your needs.</p><p><strong>For Developers:</strong> Demo data provides a consistent, reproducible environment for development and testing. The API endpoint integrates seamlessly with CI pipelines and automated test suites.</p><p><strong>For Contributors:</strong> When you fork the repo to contribute a feature or fix a bug, demo data means you don&#8217;t need to understand the full domain model just to see your changes in context. Load the data, make your changes, see them work with realistic records.</p><div><hr></div><h2><strong>Try It Today</strong></h2><p>GigaChad GRC is open source and ready to run on your machine right now:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x2hb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a617431-3d35-421d-89c6-62b55c652fb1_441x114.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x2hb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a617431-3d35-421d-89c6-62b55c652fb1_441x114.heic 424w, https://substackcdn.com/image/fetch/$s_!x2hb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a617431-3d35-421d-89c6-62b55c652fb1_441x114.heic 848w, https://substackcdn.com/image/fetch/$s_!x2hb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a617431-3d35-421d-89c6-62b55c652fb1_441x114.heic 1272w, https://substackcdn.com/image/fetch/$s_!x2hb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a617431-3d35-421d-89c6-62b55c652fb1_441x114.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x2hb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a617431-3d35-421d-89c6-62b55c652fb1_441x114.heic" width="441" height="114" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a617431-3d35-421d-89c6-62b55c652fb1_441x114.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:114,&quot;width&quot;:441,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8364,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184480322?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a617431-3d35-421d-89c6-62b55c652fb1_441x114.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!x2hb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a617431-3d35-421d-89c6-62b55c652fb1_441x114.heic 424w, https://substackcdn.com/image/fetch/$s_!x2hb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a617431-3d35-421d-89c6-62b55c652fb1_441x114.heic 848w, https://substackcdn.com/image/fetch/$s_!x2hb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a617431-3d35-421d-89c6-62b55c652fb1_441x114.heic 1272w, https://substackcdn.com/image/fetch/$s_!x2hb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a617431-3d35-421d-89c6-62b55c652fb1_441x114.heic 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Within minutes, you&#8217;ll be exploring a fully-featured GRC platform with realistic demo data&#8212;no sales call, no credit card, no configuration headaches.</p><p>Because evaluating software should be as easy as using it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.grc.engineering/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 GRC Engineering Community Blog! 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>]]></content:encoded></item><item><title><![CDATA[AI in GRC: Where It Helps, Where It Hurts, and How I Built It]]></title><description><![CDATA[A follow-up to Building Your Own GRC Stack]]></description><link>https://blog.grc.engineering/p/ai-in-grc-where-it-helps-where-it</link><guid isPermaLink="false">https://blog.grc.engineering/p/ai-in-grc-where-it-helps-where-it</guid><dc:creator><![CDATA[Chad Fryer]]></dc:creator><pubDate>Mon, 19 Jan 2026 16:55:23 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8b7e482d-594d-41f6-a598-5c4ec5462907_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Every GRC vendor has slapped &#8220;AI-powered&#8221; on their marketing. Most of it is window dressing.</p><p>The buzzwords are everywhere: AI-driven insights, intelligent automation, machine learning risk scoring. What&#8217;s missing is an honest answer to the question that matters: where does AI reduce pain versus create new problems?</p><p>After building AI into GigaChad GRC and watching practitioners use it, I&#8217;ve developed a framework I haven&#8217;t seen elsewhere. This post covers both philosophy and implementation.</p><div><hr></div><h2><strong>Part 1: The Philosophy</strong></h2><h3><strong>The AI Hype Problem</strong></h3><p>Compliance has constraints most AI implementations ignore: auditability, explainability, accountability.</p><p>When an auditor asks &#8220;why did you rate this risk as high?&#8221;, the answer cannot be &#8220;the AI said so.&#8221; Regulators need evidence, not confidence scores from black boxes. Your board needs to understand methodology, not just trust an algorithm.</p><p>Most vendor AI optimizes for demos, not these realities.</p><p><strong>AI that doesn&#8217;t help:</strong></p><ul><li><p>&#8220;AI-generated policies&#8221; with no traceability to requirements</p></li></ul><ul><li><p>Risk scores from black boxes auditors can&#8217;t explain</p></li></ul><ul><li><p>Chatbots hallucinating compliance requirements</p></li></ul><ul><li><p>Auto-classification with no override mechanism</p></li></ul><p>The question isn&#8217;t &#8220;can AI do this?&#8221; It&#8217;s &#8220;should it, and how do we maintain control?&#8221;</p><h3><strong>Where AI Actually Helps</strong></h3><p>Patterns emerged from real usage. AI adds value in five categories&#8212;all sharing one property: <strong>AI handles toil while humans retain judgment.</strong></p><p><strong>1. Evidence Collection Automation</strong></p><p>The sweet spot. Pull AWS configs, GitHub branch protection, Okta MFA status&#8212;mechanical tasks that previously required expensive integrations or manual screenshots. AI coordinates collection, not interpretation. Humans still decide if configurations meet requirements.</p><p><strong>2. Questionnaire Response Drafting</strong></p><p>Match incoming questions to your knowledge base, draft from previous answers. Critical: human always approves before sending. AI accelerates; it doesn&#8217;t decide. Prior responses are vetted, drafts are editable, the audit trail shows human approval.</p><p><strong>3. Risk Categorization and Tagging</strong></p><p>AI suggests categories, related controls, similar risks&#8212;with confidence scores. Low-confidence gets scrutiny; high-confidence can be batch-approved. Human confirms or overrides.</p><p><strong>4. Report Generation</strong></p><p>Synthesize control status into executive summaries, format evidence for auditors, summarize findings by severity. Synthesis, not judgment&#8212;underlying data remains the source of truth.</p><p><strong>5. Smart Search</strong></p><p>Natural language queries: &#8220;Show me encryption controls that failed testing last quarter.&#8221; AI translates intent into structured queries. Finding, not deciding.</p><h3><strong>Where AI Doesn&#8217;t Belong (Yet)</strong></h3><p><strong>Autonomous control testing.</strong> &#8220;AI says we&#8217;re compliant&#8221; isn&#8217;t auditable. AI surfaces evidence; humans make pass/fail determinations.</p><p><strong>Unsupervised policy creation.</strong> Policies encode organizational context. AI drafts; humans must review before publishing.</p><p><strong>Risk acceptance decisions.</strong> Business judgment with accountability. AI quantifies; humans with authority decide.</p><p><strong>Audit responses without review.</strong> One hallucination torpedoes an audit. Every character must be human-reviewed.</p><h3><strong>The Principle</strong></h3><p><strong>AI should reduce toil, not replace judgment.</strong></p><p>If an auditor asks &#8220;why did you do this?&#8221; and your answer is &#8220;the AI said so&#8221;&#8212;you&#8217;ve built a liability, not a tool.</p><div><hr></div><h2><strong>Part 2: The Implementation</strong></h2><p>GigaChad GRC implements AI through Model Context Protocol (MCP) servers&#8212;keeping AI modular, optional, and auditable.</p><h3><strong>Why MCP?</strong></h3><p>MCP provides a standard way for AI tools to interact with external systems. Instead of embedding inference in your app, you expose tools that AI clients call.</p><p>This separation matters:</p><ul><li><p><strong>AI reasoning stays in the LLM.</strong> Models, prompts, conversation management&#8212;the client&#8217;s problem.</p></li></ul><ul><li><p><strong>Domain logic stays in code.</strong> GRC knowledge, integrations, business rules in TypeScript, not prompts.</p></li></ul><ul><li><p><strong>Works with multiple clients.</strong> Claude, Cursor, custom agents&#8212;any MCP client works.</p></li></ul><ul><li><p><strong>Optional by design.</strong> Platform works without AI. Capabilities are additive.</p></li></ul><h3>The Architecture</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CzB-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bdce4a2-fec4-4d1f-bc27-58e9d2eb85cc_966x1048.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CzB-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bdce4a2-fec4-4d1f-bc27-58e9d2eb85cc_966x1048.heic 424w, https://substackcdn.com/image/fetch/$s_!CzB-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bdce4a2-fec4-4d1f-bc27-58e9d2eb85cc_966x1048.heic 848w, https://substackcdn.com/image/fetch/$s_!CzB-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bdce4a2-fec4-4d1f-bc27-58e9d2eb85cc_966x1048.heic 1272w, https://substackcdn.com/image/fetch/$s_!CzB-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bdce4a2-fec4-4d1f-bc27-58e9d2eb85cc_966x1048.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CzB-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bdce4a2-fec4-4d1f-bc27-58e9d2eb85cc_966x1048.heic" width="966" height="1048" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2bdce4a2-fec4-4d1f-bc27-58e9d2eb85cc_966x1048.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1048,&quot;width&quot;:966,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:57079,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184155504?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bdce4a2-fec4-4d1f-bc27-58e9d2eb85cc_966x1048.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CzB-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bdce4a2-fec4-4d1f-bc27-58e9d2eb85cc_966x1048.heic 424w, https://substackcdn.com/image/fetch/$s_!CzB-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bdce4a2-fec4-4d1f-bc27-58e9d2eb85cc_966x1048.heic 848w, https://substackcdn.com/image/fetch/$s_!CzB-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bdce4a2-fec4-4d1f-bc27-58e9d2eb85cc_966x1048.heic 1272w, https://substackcdn.com/image/fetch/$s_!CzB-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bdce4a2-fec4-4d1f-bc27-58e9d2eb85cc_966x1048.heic 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>Three MCP servers, each with a distinct purpose:</p><h3>grc-evidence: Automated Evidence Collection</h3><p>This server handles the mechanical work of gathering compliance evidence from external systems. No AI inference required&#8212;just structured API calls to cloud providers and security tools.</p><p><strong>Tools exposed:</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Foxv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910a794a-63d5-479a-9b86-27d8fc6ae0cb_868x818.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Foxv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910a794a-63d5-479a-9b86-27d8fc6ae0cb_868x818.heic 424w, https://substackcdn.com/image/fetch/$s_!Foxv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910a794a-63d5-479a-9b86-27d8fc6ae0cb_868x818.heic 848w, https://substackcdn.com/image/fetch/$s_!Foxv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910a794a-63d5-479a-9b86-27d8fc6ae0cb_868x818.heic 1272w, https://substackcdn.com/image/fetch/$s_!Foxv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910a794a-63d5-479a-9b86-27d8fc6ae0cb_868x818.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Foxv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910a794a-63d5-479a-9b86-27d8fc6ae0cb_868x818.heic" width="868" height="818" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/910a794a-63d5-479a-9b86-27d8fc6ae0cb_868x818.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:818,&quot;width&quot;:868,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:68798,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184155504?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910a794a-63d5-479a-9b86-27d8fc6ae0cb_868x818.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Foxv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910a794a-63d5-479a-9b86-27d8fc6ae0cb_868x818.heic 424w, https://substackcdn.com/image/fetch/$s_!Foxv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910a794a-63d5-479a-9b86-27d8fc6ae0cb_868x818.heic 848w, https://substackcdn.com/image/fetch/$s_!Foxv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910a794a-63d5-479a-9b86-27d8fc6ae0cb_868x818.heic 1272w, https://substackcdn.com/image/fetch/$s_!Foxv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910a794a-63d5-479a-9b86-27d8fc6ae0cb_868x818.heic 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>Here's how a tool is defined:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nyCe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25093f75-13ce-4822-b44b-0299792dd4c7_1232x892.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nyCe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25093f75-13ce-4822-b44b-0299792dd4c7_1232x892.heic 424w, https://substackcdn.com/image/fetch/$s_!nyCe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25093f75-13ce-4822-b44b-0299792dd4c7_1232x892.heic 848w, https://substackcdn.com/image/fetch/$s_!nyCe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25093f75-13ce-4822-b44b-0299792dd4c7_1232x892.heic 1272w, https://substackcdn.com/image/fetch/$s_!nyCe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25093f75-13ce-4822-b44b-0299792dd4c7_1232x892.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nyCe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25093f75-13ce-4822-b44b-0299792dd4c7_1232x892.heic" width="1232" height="892" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/25093f75-13ce-4822-b44b-0299792dd4c7_1232x892.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:892,&quot;width&quot;:1232,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:61646,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184155504?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25093f75-13ce-4822-b44b-0299792dd4c7_1232x892.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nyCe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25093f75-13ce-4822-b44b-0299792dd4c7_1232x892.heic 424w, https://substackcdn.com/image/fetch/$s_!nyCe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25093f75-13ce-4822-b44b-0299792dd4c7_1232x892.heic 848w, https://substackcdn.com/image/fetch/$s_!nyCe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25093f75-13ce-4822-b44b-0299792dd4c7_1232x892.heic 1272w, https://substackcdn.com/image/fetch/$s_!nyCe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25093f75-13ce-4822-b44b-0299792dd4c7_1232x892.heic 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>When called, the tool handler collects structured evidence:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z9v-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b22c203-de19-4294-8866-9b53ec62dccc_1242x1914.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z9v-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b22c203-de19-4294-8866-9b53ec62dccc_1242x1914.heic 424w, https://substackcdn.com/image/fetch/$s_!Z9v-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b22c203-de19-4294-8866-9b53ec62dccc_1242x1914.heic 848w, https://substackcdn.com/image/fetch/$s_!Z9v-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b22c203-de19-4294-8866-9b53ec62dccc_1242x1914.heic 1272w, https://substackcdn.com/image/fetch/$s_!Z9v-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b22c203-de19-4294-8866-9b53ec62dccc_1242x1914.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z9v-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b22c203-de19-4294-8866-9b53ec62dccc_1242x1914.heic" width="1242" height="1914" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4b22c203-de19-4294-8866-9b53ec62dccc_1242x1914.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1914,&quot;width&quot;:1242,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:148344,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184155504?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b22c203-de19-4294-8866-9b53ec62dccc_1242x1914.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Z9v-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b22c203-de19-4294-8866-9b53ec62dccc_1242x1914.heic 424w, https://substackcdn.com/image/fetch/$s_!Z9v-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b22c203-de19-4294-8866-9b53ec62dccc_1242x1914.heic 848w, https://substackcdn.com/image/fetch/$s_!Z9v-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b22c203-de19-4294-8866-9b53ec62dccc_1242x1914.heic 1272w, https://substackcdn.com/image/fetch/$s_!Z9v-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b22c203-de19-4294-8866-9b53ec62dccc_1242x1914.heic 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>The output is structured JSON that gets uploaded to the evidence library. No interpretation&#8212;just facts about configuration state.</p><h3>grc-compliance: Testing and Reporting</h3><p>This server automates control testing and report generation. It runs predefined test procedures against collected evidence.</p><p><strong>Tools exposed:</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vF-V!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ca2e6c3-7a77-4ed3-9df5-8695d4faa3d7_820x780.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vF-V!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ca2e6c3-7a77-4ed3-9df5-8695d4faa3d7_820x780.heic 424w, https://substackcdn.com/image/fetch/$s_!vF-V!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ca2e6c3-7a77-4ed3-9df5-8695d4faa3d7_820x780.heic 848w, https://substackcdn.com/image/fetch/$s_!vF-V!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ca2e6c3-7a77-4ed3-9df5-8695d4faa3d7_820x780.heic 1272w, https://substackcdn.com/image/fetch/$s_!vF-V!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ca2e6c3-7a77-4ed3-9df5-8695d4faa3d7_820x780.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vF-V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ca2e6c3-7a77-4ed3-9df5-8695d4faa3d7_820x780.heic" width="820" height="780" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4ca2e6c3-7a77-4ed3-9df5-8695d4faa3d7_820x780.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:780,&quot;width&quot;:820,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:60148,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184155504?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ca2e6c3-7a77-4ed3-9df5-8695d4faa3d7_820x780.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vF-V!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ca2e6c3-7a77-4ed3-9df5-8695d4faa3d7_820x780.heic 424w, https://substackcdn.com/image/fetch/$s_!vF-V!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ca2e6c3-7a77-4ed3-9df5-8695d4faa3d7_820x780.heic 848w, https://substackcdn.com/image/fetch/$s_!vF-V!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ca2e6c3-7a77-4ed3-9df5-8695d4faa3d7_820x780.heic 1272w, https://substackcdn.com/image/fetch/$s_!vF-V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ca2e6c3-7a77-4ed3-9df5-8695d4faa3d7_820x780.heic 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>The control tester works with evidence to produce auditable results:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7qq7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860d0e3e-b476-49be-8992-3463b26b2ec2_1024x1044.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7qq7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860d0e3e-b476-49be-8992-3463b26b2ec2_1024x1044.heic 424w, https://substackcdn.com/image/fetch/$s_!7qq7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860d0e3e-b476-49be-8992-3463b26b2ec2_1024x1044.heic 848w, https://substackcdn.com/image/fetch/$s_!7qq7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860d0e3e-b476-49be-8992-3463b26b2ec2_1024x1044.heic 1272w, https://substackcdn.com/image/fetch/$s_!7qq7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860d0e3e-b476-49be-8992-3463b26b2ec2_1024x1044.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7qq7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860d0e3e-b476-49be-8992-3463b26b2ec2_1024x1044.heic" width="1024" height="1044" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/860d0e3e-b476-49be-8992-3463b26b2ec2_1024x1044.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1044,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:66731,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184155504?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860d0e3e-b476-49be-8992-3463b26b2ec2_1024x1044.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7qq7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860d0e3e-b476-49be-8992-3463b26b2ec2_1024x1044.heic 424w, https://substackcdn.com/image/fetch/$s_!7qq7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860d0e3e-b476-49be-8992-3463b26b2ec2_1024x1044.heic 848w, https://substackcdn.com/image/fetch/$s_!7qq7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860d0e3e-b476-49be-8992-3463b26b2ec2_1024x1044.heic 1272w, https://substackcdn.com/image/fetch/$s_!7qq7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860d0e3e-b476-49be-8992-3463b26b2ec2_1024x1044.heic 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>Test results include the evidence examined, criteria applied, and outcome&#8212;all auditable.</p><h4><strong>grc-ai-assistant: Intelligent Analysis</strong></h4><p>This server uses LLM inference for analysis tasks. Unlike the other servers, it calls AI models to generate insights.</p><p><strong>Tools exposed:</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FOXh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcdefd3-44ed-4eed-9098-eef62d1db1b0_768x776.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FOXh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcdefd3-44ed-4eed-9098-eef62d1db1b0_768x776.heic 424w, https://substackcdn.com/image/fetch/$s_!FOXh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcdefd3-44ed-4eed-9098-eef62d1db1b0_768x776.heic 848w, https://substackcdn.com/image/fetch/$s_!FOXh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcdefd3-44ed-4eed-9098-eef62d1db1b0_768x776.heic 1272w, https://substackcdn.com/image/fetch/$s_!FOXh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcdefd3-44ed-4eed-9098-eef62d1db1b0_768x776.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FOXh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcdefd3-44ed-4eed-9098-eef62d1db1b0_768x776.heic" width="768" height="776" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2bcdefd3-44ed-4eed-9098-eef62d1db1b0_768x776.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:776,&quot;width&quot;:768,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:55498,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184155504?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcdefd3-44ed-4eed-9098-eef62d1db1b0_768x776.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FOXh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcdefd3-44ed-4eed-9098-eef62d1db1b0_768x776.heic 424w, https://substackcdn.com/image/fetch/$s_!FOXh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcdefd3-44ed-4eed-9098-eef62d1db1b0_768x776.heic 848w, https://substackcdn.com/image/fetch/$s_!FOXh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcdefd3-44ed-4eed-9098-eef62d1db1b0_768x776.heic 1272w, https://substackcdn.com/image/fetch/$s_!FOXh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcdefd3-44ed-4eed-9098-eef62d1db1b0_768x776.heic 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>The risk analyzer shows how AI suggestions are structured:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ufgQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2714f69d-d3cf-4ba3-8010-f27cdaef3c18_912x810.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ufgQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2714f69d-d3cf-4ba3-8010-f27cdaef3c18_912x810.heic 424w, https://substackcdn.com/image/fetch/$s_!ufgQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2714f69d-d3cf-4ba3-8010-f27cdaef3c18_912x810.heic 848w, https://substackcdn.com/image/fetch/$s_!ufgQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2714f69d-d3cf-4ba3-8010-f27cdaef3c18_912x810.heic 1272w, https://substackcdn.com/image/fetch/$s_!ufgQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2714f69d-d3cf-4ba3-8010-f27cdaef3c18_912x810.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ufgQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2714f69d-d3cf-4ba3-8010-f27cdaef3c18_912x810.heic" width="912" height="810" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2714f69d-d3cf-4ba3-8010-f27cdaef3c18_912x810.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:912,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:65054,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184155504?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2714f69d-d3cf-4ba3-8010-f27cdaef3c18_912x810.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ufgQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2714f69d-d3cf-4ba3-8010-f27cdaef3c18_912x810.heic 424w, https://substackcdn.com/image/fetch/$s_!ufgQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2714f69d-d3cf-4ba3-8010-f27cdaef3c18_912x810.heic 848w, https://substackcdn.com/image/fetch/$s_!ufgQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2714f69d-d3cf-4ba3-8010-f27cdaef3c18_912x810.heic 1272w, https://substackcdn.com/image/fetch/$s_!ufgQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2714f69d-d3cf-4ba3-8010-f27cdaef3c18_912x810.heic 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>Every AI suggestion includes:</p><ul><li><p><strong>Scores with scales</strong> so humans understand the range</p></li><li><p><strong>Rationale</strong> explaining why the AI reached this conclusion</p></li><li><p><strong>Related items</strong> for context</p></li><li><p><strong>Compliance impact</strong> tied to specific frameworks and controls</p></li></ul><p>The <code>rationale</code> field is critical. It&#8217;s what you show the auditor when they ask &#8220;why?&#8221;</p><h3>Building an MCP Server: The Pattern</h3><p>If you want to add your own AI capabilities, here&#8217;s the pattern:</p><p><strong>1. Project structure:</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lL73!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F721d8284-50ab-4931-b26c-c0e1a5b08e60_982x332.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lL73!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F721d8284-50ab-4931-b26c-c0e1a5b08e60_982x332.heic 424w, https://substackcdn.com/image/fetch/$s_!lL73!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F721d8284-50ab-4931-b26c-c0e1a5b08e60_982x332.heic 848w, https://substackcdn.com/image/fetch/$s_!lL73!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F721d8284-50ab-4931-b26c-c0e1a5b08e60_982x332.heic 1272w, https://substackcdn.com/image/fetch/$s_!lL73!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F721d8284-50ab-4931-b26c-c0e1a5b08e60_982x332.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lL73!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F721d8284-50ab-4931-b26c-c0e1a5b08e60_982x332.heic" width="982" height="332" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/721d8284-50ab-4931-b26c-c0e1a5b08e60_982x332.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:332,&quot;width&quot;:982,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:23043,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184155504?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F721d8284-50ab-4931-b26c-c0e1a5b08e60_982x332.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lL73!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F721d8284-50ab-4931-b26c-c0e1a5b08e60_982x332.heic 424w, https://substackcdn.com/image/fetch/$s_!lL73!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F721d8284-50ab-4931-b26c-c0e1a5b08e60_982x332.heic 848w, https://substackcdn.com/image/fetch/$s_!lL73!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F721d8284-50ab-4931-b26c-c0e1a5b08e60_982x332.heic 1272w, https://substackcdn.com/image/fetch/$s_!lL73!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F721d8284-50ab-4931-b26c-c0e1a5b08e60_982x332.heic 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>2. Server setup:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tk9d!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c021110-464e-4c18-87a7-5615389e4632_1242x1580.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tk9d!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c021110-464e-4c18-87a7-5615389e4632_1242x1580.heic 424w, https://substackcdn.com/image/fetch/$s_!tk9d!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c021110-464e-4c18-87a7-5615389e4632_1242x1580.heic 848w, https://substackcdn.com/image/fetch/$s_!tk9d!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c021110-464e-4c18-87a7-5615389e4632_1242x1580.heic 1272w, https://substackcdn.com/image/fetch/$s_!tk9d!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c021110-464e-4c18-87a7-5615389e4632_1242x1580.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tk9d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c021110-464e-4c18-87a7-5615389e4632_1242x1580.heic" width="1242" height="1580" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c021110-464e-4c18-87a7-5615389e4632_1242x1580.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1580,&quot;width&quot;:1242,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:102771,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184155504?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c021110-464e-4c18-87a7-5615389e4632_1242x1580.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tk9d!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c021110-464e-4c18-87a7-5615389e4632_1242x1580.heic 424w, https://substackcdn.com/image/fetch/$s_!tk9d!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c021110-464e-4c18-87a7-5615389e4632_1242x1580.heic 848w, https://substackcdn.com/image/fetch/$s_!tk9d!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c021110-464e-4c18-87a7-5615389e4632_1242x1580.heic 1272w, https://substackcdn.com/image/fetch/$s_!tk9d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c021110-464e-4c18-87a7-5615389e4632_1242x1580.heic 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><strong>3. Connect to GigaChad GRC APIs:</strong></p><p>Your tools can call the platform APIs to read and write data:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xd9f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000db3e9-12e1-40c1-82af-226da7d86ecd_1064x812.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xd9f!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000db3e9-12e1-40c1-82af-226da7d86ecd_1064x812.heic 424w, https://substackcdn.com/image/fetch/$s_!xd9f!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000db3e9-12e1-40c1-82af-226da7d86ecd_1064x812.heic 848w, https://substackcdn.com/image/fetch/$s_!xd9f!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000db3e9-12e1-40c1-82af-226da7d86ecd_1064x812.heic 1272w, https://substackcdn.com/image/fetch/$s_!xd9f!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000db3e9-12e1-40c1-82af-226da7d86ecd_1064x812.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xd9f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000db3e9-12e1-40c1-82af-226da7d86ecd_1064x812.heic" width="1064" height="812" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/000db3e9-12e1-40c1-82af-226da7d86ecd_1064x812.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:812,&quot;width&quot;:1064,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:66631,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184155504?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000db3e9-12e1-40c1-82af-226da7d86ecd_1064x812.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xd9f!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000db3e9-12e1-40c1-82af-226da7d86ecd_1064x812.heic 424w, https://substackcdn.com/image/fetch/$s_!xd9f!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000db3e9-12e1-40c1-82af-226da7d86ecd_1064x812.heic 848w, https://substackcdn.com/image/fetch/$s_!xd9f!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000db3e9-12e1-40c1-82af-226da7d86ecd_1064x812.heic 1272w, https://substackcdn.com/image/fetch/$s_!xd9f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000db3e9-12e1-40c1-82af-226da7d86ecd_1064x812.heic 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><h3>The Audit Trail Problem</h3><p>Here&#8217;s the challenge: every AI-initiated action must be auditable.</p><p>When an AI tool collects evidence, we need to know:</p><ul><li><p>What tool was called</p></li><li><p>What parameters were passed</p></li><li><p>What was returned</p></li><li><p>When it happened</p></li><li><p>Which AI session initiated it</p></li></ul><p>The solution: audit logging middleware that wraps every tool call.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!y_hN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb096a6c-351e-43d6-a820-8a54fa1ceddb_1064x1218.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!y_hN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb096a6c-351e-43d6-a820-8a54fa1ceddb_1064x1218.heic 424w, https://substackcdn.com/image/fetch/$s_!y_hN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb096a6c-351e-43d6-a820-8a54fa1ceddb_1064x1218.heic 848w, https://substackcdn.com/image/fetch/$s_!y_hN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb096a6c-351e-43d6-a820-8a54fa1ceddb_1064x1218.heic 1272w, https://substackcdn.com/image/fetch/$s_!y_hN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb096a6c-351e-43d6-a820-8a54fa1ceddb_1064x1218.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!y_hN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb096a6c-351e-43d6-a820-8a54fa1ceddb_1064x1218.heic" width="1064" height="1218" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db096a6c-351e-43d6-a820-8a54fa1ceddb_1064x1218.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1218,&quot;width&quot;:1064,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:87459,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184155504?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb096a6c-351e-43d6-a820-8a54fa1ceddb_1064x1218.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!y_hN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb096a6c-351e-43d6-a820-8a54fa1ceddb_1064x1218.heic 424w, https://substackcdn.com/image/fetch/$s_!y_hN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb096a6c-351e-43d6-a820-8a54fa1ceddb_1064x1218.heic 848w, https://substackcdn.com/image/fetch/$s_!y_hN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb096a6c-351e-43d6-a820-8a54fa1ceddb_1064x1218.heic 1272w, https://substackcdn.com/image/fetch/$s_!y_hN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb096a6c-351e-43d6-a820-8a54fa1ceddb_1064x1218.heic 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>Evidence uploaded by AI is tagged with the collection method:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Zjjd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7feba51-66a6-4751-93b4-9ddd65fbd13a_1118x262.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Zjjd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7feba51-66a6-4751-93b4-9ddd65fbd13a_1118x262.heic 424w, https://substackcdn.com/image/fetch/$s_!Zjjd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7feba51-66a6-4751-93b4-9ddd65fbd13a_1118x262.heic 848w, https://substackcdn.com/image/fetch/$s_!Zjjd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7feba51-66a6-4751-93b4-9ddd65fbd13a_1118x262.heic 1272w, https://substackcdn.com/image/fetch/$s_!Zjjd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7feba51-66a6-4751-93b4-9ddd65fbd13a_1118x262.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Zjjd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7feba51-66a6-4751-93b4-9ddd65fbd13a_1118x262.heic" width="1118" height="262" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c7feba51-66a6-4751-93b4-9ddd65fbd13a_1118x262.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:262,&quot;width&quot;:1118,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:22653,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184155504?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7feba51-66a6-4751-93b4-9ddd65fbd13a_1118x262.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Zjjd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7feba51-66a6-4751-93b4-9ddd65fbd13a_1118x262.heic 424w, https://substackcdn.com/image/fetch/$s_!Zjjd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7feba51-66a6-4751-93b4-9ddd65fbd13a_1118x262.heic 848w, https://substackcdn.com/image/fetch/$s_!Zjjd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7feba51-66a6-4751-93b4-9ddd65fbd13a_1118x262.heic 1272w, https://substackcdn.com/image/fetch/$s_!Zjjd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7feba51-66a6-4751-93b4-9ddd65fbd13a_1118x262.heic 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Auditors can filter to see all AI-collected evidence. Nothing is hidden.</p><div><hr></div><h2>Part 3: Practical Patterns</h2><p>Three patterns emerged from production usage:</p><h3>The &#8220;AI Suggests, Human Confirms&#8221; Pattern</h3><p>Every AI output is a suggestion, not a decision.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EkmE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ecfbae-43ed-4b04-9efd-330f5e1fcabb_942x288.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EkmE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ecfbae-43ed-4b04-9efd-330f5e1fcabb_942x288.heic 424w, https://substackcdn.com/image/fetch/$s_!EkmE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ecfbae-43ed-4b04-9efd-330f5e1fcabb_942x288.heic 848w, https://substackcdn.com/image/fetch/$s_!EkmE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ecfbae-43ed-4b04-9efd-330f5e1fcabb_942x288.heic 1272w, https://substackcdn.com/image/fetch/$s_!EkmE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ecfbae-43ed-4b04-9efd-330f5e1fcabb_942x288.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EkmE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ecfbae-43ed-4b04-9efd-330f5e1fcabb_942x288.heic" width="942" height="288" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/13ecfbae-43ed-4b04-9efd-330f5e1fcabb_942x288.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:288,&quot;width&quot;:942,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:23625,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184155504?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ecfbae-43ed-4b04-9efd-330f5e1fcabb_942x288.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EkmE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ecfbae-43ed-4b04-9efd-330f5e1fcabb_942x288.heic 424w, https://substackcdn.com/image/fetch/$s_!EkmE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ecfbae-43ed-4b04-9efd-330f5e1fcabb_942x288.heic 848w, https://substackcdn.com/image/fetch/$s_!EkmE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ecfbae-43ed-4b04-9efd-330f5e1fcabb_942x288.heic 1272w, https://substackcdn.com/image/fetch/$s_!EkmE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ecfbae-43ed-4b04-9efd-330f5e1fcabb_942x288.heic 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>Low-confidence suggestions (&lt; 0.7) are flagged for detailed review. High-confidence suggestions (&gt; 0.9) can be batch-approved. The threshold is configurable per organization.</p><p>The human sees:</p><ul><li><p>What the AI suggests</p></li><li><p>How confident it is</p></li><li><p>Why it reached that conclusion</p></li><li><p>What alternatives exist</p></li></ul><p>The human decides whether to accept, modify, or reject.</p><h3>The &#8220;Evidence First, Analysis Second&#8221; Pattern</h3><p>Never let AI analyze something you haven&#8217;t collected in structured form.</p><p>Wrong: &#8220;AI, tell me if we&#8217;re SOC 2 compliant.&#8221; Right: &#8220;Collect AWS configs, then show me the analysis.&#8221;</p><p>The evidence is the source of truth. AI explains evidence; it doesn&#8217;t replace it. Auditors can always drill down from the AI summary to the raw data.</p><h3>The &#8220;Escape Hatch&#8221; Pattern</h3><p>Every AI feature has a manual fallback.</p><ul><li><p>AI evidence collection failing? Collect manually.</p></li><li><p>AI risk scoring seems wrong? Override it.</p></li><li><p>AI report generation broken? Export the data and build your own.</p></li></ul><p>AI failures don&#8217;t block core workflows. The platform is fully functional without any AI server running.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1s3U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8305a573-2b07-4c41-be97-3cfc7d744c6c_944x148.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1s3U!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8305a573-2b07-4c41-be97-3cfc7d744c6c_944x148.heic 424w, https://substackcdn.com/image/fetch/$s_!1s3U!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8305a573-2b07-4c41-be97-3cfc7d744c6c_944x148.heic 848w, https://substackcdn.com/image/fetch/$s_!1s3U!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8305a573-2b07-4c41-be97-3cfc7d744c6c_944x148.heic 1272w, https://substackcdn.com/image/fetch/$s_!1s3U!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8305a573-2b07-4c41-be97-3cfc7d744c6c_944x148.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1s3U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8305a573-2b07-4c41-be97-3cfc7d744c6c_944x148.heic" width="944" height="148" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8305a573-2b07-4c41-be97-3cfc7d744c6c_944x148.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:148,&quot;width&quot;:944,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19489,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184155504?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8305a573-2b07-4c41-be97-3cfc7d744c6c_944x148.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1s3U!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8305a573-2b07-4c41-be97-3cfc7d744c6c_944x148.heic 424w, https://substackcdn.com/image/fetch/$s_!1s3U!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8305a573-2b07-4c41-be97-3cfc7d744c6c_944x148.heic 848w, https://substackcdn.com/image/fetch/$s_!1s3U!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8305a573-2b07-4c41-be97-3cfc7d744c6c_944x148.heic 1272w, https://substackcdn.com/image/fetch/$s_!1s3U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8305a573-2b07-4c41-be97-3cfc7d744c6c_944x148.heic 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Users can disable AI suggestions per module in settings. Some organizations disable AI entirely for regulated data. The platform respects that.</p><div><hr></div><h2>Closing: AI as Augmentation, Not Replacement</h2><p>The best AI in GRC is invisible. It removes the tedious work&#8212;evidence collection, questionnaire drafting, report formatting&#8212;without inserting itself into decisions that require human judgment.</p><p>Here&#8217;s the test: can you explain every AI-influenced decision to an auditor using evidence they can verify? If yes, you&#8217;ve built AI that helps. If no, you&#8217;ve built a liability.</p><p>The MCP architecture keeps AI capabilities modular and optional. You can use all three servers, just one, or none. You can add your own. You can disable features that don&#8217;t fit your risk appetite.</p><p>Build for the auditor&#8217;s question: &#8220;Show me why you made this decision.&#8221;</p><p>If the answer involves evidence, human review, and documented rationale, you&#8217;re doing it right. If the answer is &#8220;the AI said so,&#8221; go back to the drawing board.</p><div><hr></div><h2>Get Involved</h2><p>The MCP servers are in the repo:</p><ul><li><p><code>mcp-servers/grc-evidence</code></p></li><li><p><code>mcp-servers/grc-compliance</code></p></li><li><p><code>mcp-servers/grc-ai-assistant</code></p></li></ul><p>If you build new evidence collectors&#8212;for tools we haven&#8217;t covered yet&#8212;pull requests are welcome. If you&#8217;ve found ways to make AI more auditable in GRC, the community wants to hear about it.</p><p>The vendors will keep adding &#8220;AI-powered&#8221; to their marketing. We&#8217;ll keep building AI that actually helps practitioners.</p><div><hr></div><p><em>The author still believes AI should reduce toil, not replace judgment. Still maintains the MCP servers. Still drinks too much coffee.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.grc.engineering/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 GRC Engineering Community Blog! 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>]]></content:encoded></item><item><title><![CDATA[The Hidden Costs of Building Your Own GRC Platform]]></title><description><![CDATA[A follow-up to Building Your Own GRC Stack]]></description><link>https://blog.grc.engineering/p/the-hidden-costs-of-building-your</link><guid isPermaLink="false">https://blog.grc.engineering/p/the-hidden-costs-of-building-your</guid><dc:creator><![CDATA[Chad Fryer]]></dc:creator><pubDate>Wed, 14 Jan 2026 16:56:39 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/21ef144d-3f45-4ae6-8be1-8ce14869b215_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><a href="https://www.linkedin.com/in/ppferland/">Pierre-Paul Ferland</a> left a comment on my architecture post that deserves a full response:</p><blockquote><p>&#8220;Great stuff! I like how you explain the tradeoffs of shared libraries vs shared services and shared database vs database per service. Also, as a &#8216;biased towards buy&#8217; person, it shows the tradeoffs that a team has to think about when weighing in on a commercial platform vs DIY: do you really have the headcounts to worry about traceability in each header, transaction IDs, network hops, etc.&#8221;</p></blockquote><p>He&#8217;s right. My previous posts focused on the upside&#8212;escaping vendor lock-in, building exactly what you need, the satisfaction of owning your stack. This post addresses the other side of the ledger.</p><p>I built GigaChad GRC. Here&#8217;s what it actually cost.</p><div><hr></div><h2>The Costs I Expected</h2><p>Let&#8217;s get the obvious ones out of the way. Anyone considering DIY knows about these:</p><p><strong>Initial development time.</strong> Nights, weekends, the caffeine-fueled push to get something working. I knew this going in.</p><p><strong>Learning curve.</strong> NestJS, Prisma, Keycloak, Traefik, Docker Compose, Terraform&#8212;each one has a learning curve. I budgeted for this.</p><p><strong>Infrastructure setup.</strong> PostgreSQL, Redis, object storage, authentication. Table stakes for any platform.</p><p>These are the costs everyone calculates. They&#8217;re also the smallest part of the real total.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3mm5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d72a79-8544-456b-a962-e5b45b1df295_2070x1424.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3mm5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d72a79-8544-456b-a962-e5b45b1df295_2070x1424.heic 424w, https://substackcdn.com/image/fetch/$s_!3mm5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d72a79-8544-456b-a962-e5b45b1df295_2070x1424.heic 848w, https://substackcdn.com/image/fetch/$s_!3mm5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d72a79-8544-456b-a962-e5b45b1df295_2070x1424.heic 1272w, https://substackcdn.com/image/fetch/$s_!3mm5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d72a79-8544-456b-a962-e5b45b1df295_2070x1424.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3mm5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d72a79-8544-456b-a962-e5b45b1df295_2070x1424.heic" width="1456" height="1002" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/28d72a79-8544-456b-a962-e5b45b1df295_2070x1424.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1002,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:97291,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184474640?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d72a79-8544-456b-a962-e5b45b1df295_2070x1424.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3mm5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d72a79-8544-456b-a962-e5b45b1df295_2070x1424.heic 424w, https://substackcdn.com/image/fetch/$s_!3mm5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d72a79-8544-456b-a962-e5b45b1df295_2070x1424.heic 848w, https://substackcdn.com/image/fetch/$s_!3mm5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d72a79-8544-456b-a962-e5b45b1df295_2070x1424.heic 1272w, https://substackcdn.com/image/fetch/$s_!3mm5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28d72a79-8544-456b-a962-e5b45b1df295_2070x1424.heic 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><h2>The Costs I Didn&#8217;t Expect</h2><h3>The Distributed Systems Tax</h3><p>That LinkedIn comment nailed it: correlation IDs, traceability, network hops.</p><p>GigaChad GRC has seven microservices. Each one is a debugging boundary. When a request fails, which service caused it? The logs don&#8217;t correlate themselves.</p><p>I didn&#8217;t add correlation IDs from day one. That decision cost me a two-hour debugging session that should have been ten minutes. The request touched Controls, then Frameworks, then back to Controls. The failure happened in the second hop. Without correlation IDs propagating through headers, I was grep-ing timestamps across three log streams trying to reconstruct the sequence.</p><p><strong>The lesson:</strong> Every microservice boundary is a debugging boundary. The architecture diagrams don&#8217;t show the operational complexity hiding in each arrow.</p><p>Features that look simple on paper touch multiple services:</p><ul><li><p>&#8220;Add evidence to a control&#8221; &#8594; Controls service + storage abstraction + audit logging</p></li><li><p>&#8220;Test a control against a framework&#8221; &#8594; Controls + Frameworks + Evidence</p></li><li><p>&#8220;Generate an audit report&#8221; &#8594; Audit service + Controls + Frameworks + Evidence + Reports</p></li></ul><p>That &#8220;simple&#8221; feature isn&#8217;t one change&#8212;it&#8217;s coordinated changes across services, with testing, deployment, and the prayer that nothing breaks in production.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lR5-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd170d117-2285-452d-b621-293e00c320d4_2070x1034.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lR5-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd170d117-2285-452d-b621-293e00c320d4_2070x1034.heic 424w, https://substackcdn.com/image/fetch/$s_!lR5-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd170d117-2285-452d-b621-293e00c320d4_2070x1034.heic 848w, https://substackcdn.com/image/fetch/$s_!lR5-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd170d117-2285-452d-b621-293e00c320d4_2070x1034.heic 1272w, https://substackcdn.com/image/fetch/$s_!lR5-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd170d117-2285-452d-b621-293e00c320d4_2070x1034.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lR5-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd170d117-2285-452d-b621-293e00c320d4_2070x1034.heic" width="1456" height="727" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d170d117-2285-452d-b621-293e00c320d4_2070x1034.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:727,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:60310,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184474640?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd170d117-2285-452d-b621-293e00c320d4_2070x1034.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lR5-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd170d117-2285-452d-b621-293e00c320d4_2070x1034.heic 424w, https://substackcdn.com/image/fetch/$s_!lR5-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd170d117-2285-452d-b621-293e00c320d4_2070x1034.heic 848w, https://substackcdn.com/image/fetch/$s_!lR5-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd170d117-2285-452d-b621-293e00c320d4_2070x1034.heic 1272w, https://substackcdn.com/image/fetch/$s_!lR5-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd170d117-2285-452d-b621-293e00c320d4_2070x1034.heic 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><h3>The Upgrade Treadmill</h3><p>Dependencies don&#8217;t maintain themselves.</p><p>When Keycloak releases a security patch, that&#8217;s my weekend. When PostgreSQL announces a major version with breaking changes, that&#8217;s my migration to plan. When <code>npm audit</code> shows 47 vulnerabilities of varying severity, that&#8217;s my judgment call on which ones matter.</p><p>Commercial vendors absorb this. They have teams dedicated to keeping infrastructure current. They test upgrades before you see them. They eat the cost of compatibility work.</p><p>DIY means you ARE the vendor. Every upstream change is your responsibility.</p><p>In the past year, I&#8217;ve dealt with:</p><ul><li><p>Prisma ORM updates that changed query behavior</p></li><li><p>Breaking changes in the MCP SDK that required refactoring all three servers</p></li><li><p>Node.js version updates that broke Docker builds</p></li><li><p>Keycloak realm export format changes that invalidated my configuration</p></li></ul><p>None of these were on my roadmap. All of them consumed time I&#8217;d planned for features.</p><h3>The &#8220;It Works on My Machine&#8221; Problem</h3><p>Development happens on my M1 Mac. Production runs on Linux. Docker papers over most differences&#8212;until it doesn&#8217;t.</p><p>Memory limits that seemed fine locally caused OOM kills in production. Network policies that don&#8217;t exist in docker-compose become walls in Kubernetes. File system permissions that work on macOS fail silently on Linux.</p><p>The first real production deployment surfaced a dozen assumptions I didn&#8217;t know I&#8217;d made.</p><p>Commercial platforms have dedicated infrastructure teams. They&#8217;ve already hit these issues. They&#8217;ve documented the solutions. You get the benefit of their experience without paying for their mistakes.</p><h3>Documentation Debt</h3><p>Nobody wants to write docs. I certainly didn&#8217;t.</p><p>But without docs:</p><ul><li><p>Every new team member&#8217;s onboarding is a conversation (my time)</p></li><li><p>&#8220;How do I add a new integration?&#8221; gets asked repeatedly (my time)</p></li><li><p>API changes without changelogs become support burden (my time)</p></li><li><p>Six months later, I don&#8217;t remember why I made that decision (my time, debugging my own code)</p></li></ul><p>Vendor platforms have technical writers. They have documentation teams. They have customer success people who update the help center.</p><p>You are the documentation team. You are the technical writer. You are customer success. Every role you don&#8217;t fill is a gap the platform&#8217;s users will feel.</p><h3>The Support Burden</h3><p>Commercial vendors have support tiers, SLAs, escalation paths. When something breaks, you open a ticket.</p><p>DIY means:</p><ul><li><p>No vendor to call</p></li><li><p>No SLA for a fix</p></li><li><p>No one to blame but yourself</p></li><li><p>Your weekend is the incident response team</p></li></ul><p>When the platform breaks at 11 PM, you&#8217;re not waiting for a vendor response. You&#8217;re debugging. When it breaks during a demo, you&#8217;re not pointing at someone else&#8217;s bug. You&#8217;re apologizing and fixing.</p><p>The psychological weight of sole ownership is harder to quantify but real. Commercial platforms let you externalize blame. DIY makes every failure personal.</p><h3>Opportunity Cost</h3><p>This is the hardest to measure and the most important.</p><p>Every hour maintaining infrastructure is an hour not improving GRC outcomes. Every debugging session is time not spent on actual compliance work. Every dependency upgrade is a feature not built.</p><p>I track my time loosely. Rough estimates:</p><ul><li><p>40% new features</p></li><li><p>25% maintenance and upgrades</p></li><li><p>20% debugging and fixing</p></li><li><p>15% documentation and support</p></li></ul><p>That 60% not spent on features? On a commercial platform, it would be close to 0%. Someone else handles the maintenance. Someone else debugs the infrastructure. Someone else updates the docs.</p><p>The question isn&#8217;t whether DIY costs more time. It does. The question is whether you&#8217;re getting value from that time that you couldn&#8217;t get from a vendor.</p><h2>The Compounding Effect</h2><p>These costs don&#8217;t add&#8212;they multiply.</p><p><strong>Scenario:</strong> A security patch requires upgrading a core dependency. The upgrade changes behavior in ways that affect two services. Debugging the issue takes longer because you didn&#8217;t add correlation IDs. The fix requires updating documentation you never wrote. You deploy on a Friday and discover a production-specific issue. Your weekend becomes incident response.</p><p>Each cost alone is manageable. Together, they cascade.</p><p>Here&#8217;s a real timeline from a &#8220;simple&#8221; feature request:</p><p><strong>Request:</strong> Add a new integration (Jamf evidence collector)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XpYU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71c96823-d0dd-445d-bd5d-3c1bb87d59c8_886x646.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XpYU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71c96823-d0dd-445d-bd5d-3c1bb87d59c8_886x646.heic 424w, https://substackcdn.com/image/fetch/$s_!XpYU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71c96823-d0dd-445d-bd5d-3c1bb87d59c8_886x646.heic 848w, https://substackcdn.com/image/fetch/$s_!XpYU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71c96823-d0dd-445d-bd5d-3c1bb87d59c8_886x646.heic 1272w, https://substackcdn.com/image/fetch/$s_!XpYU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71c96823-d0dd-445d-bd5d-3c1bb87d59c8_886x646.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XpYU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71c96823-d0dd-445d-bd5d-3c1bb87d59c8_886x646.heic" width="886" height="646" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/71c96823-d0dd-445d-bd5d-3c1bb87d59c8_886x646.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:646,&quot;width&quot;:886,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:46579,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184474640?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71c96823-d0dd-445d-bd5d-3c1bb87d59c8_886x646.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XpYU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71c96823-d0dd-445d-bd5d-3c1bb87d59c8_886x646.heic 424w, https://substackcdn.com/image/fetch/$s_!XpYU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71c96823-d0dd-445d-bd5d-3c1bb87d59c8_886x646.heic 848w, https://substackcdn.com/image/fetch/$s_!XpYU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71c96823-d0dd-445d-bd5d-3c1bb87d59c8_886x646.heic 1272w, https://substackcdn.com/image/fetch/$s_!XpYU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71c96823-d0dd-445d-bd5d-3c1bb87d59c8_886x646.heic 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>That&#8217;s 2.3x the expected time. And this was a straightforward feature&#8212;no coordination across services, no breaking changes, no security implications.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VL4l!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab9c698-4b22-4f82-9561-d53035d64b77_2073x1244.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VL4l!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab9c698-4b22-4f82-9561-d53035d64b77_2073x1244.heic 424w, https://substackcdn.com/image/fetch/$s_!VL4l!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab9c698-4b22-4f82-9561-d53035d64b77_2073x1244.heic 848w, https://substackcdn.com/image/fetch/$s_!VL4l!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab9c698-4b22-4f82-9561-d53035d64b77_2073x1244.heic 1272w, https://substackcdn.com/image/fetch/$s_!VL4l!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab9c698-4b22-4f82-9561-d53035d64b77_2073x1244.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VL4l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab9c698-4b22-4f82-9561-d53035d64b77_2073x1244.heic" width="1456" height="874" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ab9c698-4b22-4f82-9561-d53035d64b77_2073x1244.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:874,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:50307,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184474640?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab9c698-4b22-4f82-9561-d53035d64b77_2073x1244.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VL4l!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab9c698-4b22-4f82-9561-d53035d64b77_2073x1244.heic 424w, https://substackcdn.com/image/fetch/$s_!VL4l!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab9c698-4b22-4f82-9561-d53035d64b77_2073x1244.heic 848w, https://substackcdn.com/image/fetch/$s_!VL4l!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab9c698-4b22-4f82-9561-d53035d64b77_2073x1244.heic 1272w, https://substackcdn.com/image/fetch/$s_!VL4l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ab9c698-4b22-4f82-9561-d53035d64b77_2073x1244.heic 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><h2>When DIY Makes Sense Anyway</h2><p>Despite all this, building GigaChad GRC was right for me. DIY makes sense when:</p><p><strong>You have engineering capacity AND long-term willingness.</strong> Not just bandwidth to build&#8212;bandwidth to maintain for years. The engineer who builds it should want to own it indefinitely.</p><p><strong>Your requirements genuinely don&#8217;t fit commercial offerings.</strong> Not &#8220;the vendor is annoying&#8221;&#8212;actually can&#8217;t do what you need. API gating, integration limitations, workflow inflexibility that can&#8217;t be worked around.</p><p><strong>Vendor lock-in costs exceed maintenance costs.</strong> Calculate both honestly. Migration costs are real. So is the 60% maintenance tax on DIY.</p><p><strong>You&#8217;re building institutional capability, not just a tool.</strong> If you&#8217;re creating engineering muscle around GRC&#8212;capability that compounds&#8212;DIY might be an investment. If you just need the compliance checkbox, it&#8217;s pure cost.</p><p><strong>You enjoy this.</strong> Seriously. If maintaining infrastructure feels like a burden, buy. If you find satisfaction in owning the stack, the maintenance cost is partially offset by intrinsic motivation.</p><p>I hit all five criteria. Most teams don&#8217;t.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!35Bz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d4bd87-a854-44c8-b816-ada4f5afb194_2073x1294.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!35Bz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d4bd87-a854-44c8-b816-ada4f5afb194_2073x1294.heic 424w, https://substackcdn.com/image/fetch/$s_!35Bz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d4bd87-a854-44c8-b816-ada4f5afb194_2073x1294.heic 848w, https://substackcdn.com/image/fetch/$s_!35Bz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d4bd87-a854-44c8-b816-ada4f5afb194_2073x1294.heic 1272w, https://substackcdn.com/image/fetch/$s_!35Bz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d4bd87-a854-44c8-b816-ada4f5afb194_2073x1294.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!35Bz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d4bd87-a854-44c8-b816-ada4f5afb194_2073x1294.heic" width="1456" height="909" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5d4bd87-a854-44c8-b816-ada4f5afb194_2073x1294.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:909,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:161723,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184474640?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d4bd87-a854-44c8-b816-ada4f5afb194_2073x1294.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!35Bz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d4bd87-a854-44c8-b816-ada4f5afb194_2073x1294.heic 424w, https://substackcdn.com/image/fetch/$s_!35Bz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d4bd87-a854-44c8-b816-ada4f5afb194_2073x1294.heic 848w, https://substackcdn.com/image/fetch/$s_!35Bz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d4bd87-a854-44c8-b816-ada4f5afb194_2073x1294.heic 1272w, https://substackcdn.com/image/fetch/$s_!35Bz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d4bd87-a854-44c8-b816-ada4f5afb194_2073x1294.heic 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><h2>When You Should Just Buy</h2><p>Let me be direct:</p><p><strong>Small team without dedicated engineering.</strong> If no one wants to own this as their primary responsibility, buy. Part-time maintenance leads to accumulated debt.</p><p><strong>Compliance is a checkbox, not a strategic capability.</strong> If you just need to pass audits and move on, vendor platforms are optimized for exactly this.</p><p><strong>You need it working yesterday.</strong> Commercial platforms are deployed in days. DIY takes months to reach parity.</p><p><strong>Your vendor&#8217;s roadmap actually addresses your needs.</strong> Talk to them. Really try to get the feature. Many practitioners skip this step and build instead of asking.</p><p><strong>The &#8220;premium&#8221; features would take you 6+ months to build.</strong> Calculate honestly: that API access costing $30K/year would take how many engineering hours to replicate? At fully-loaded engineer cost, the math often favors buying.</p><h3>The Math</h3><p>Rough calculation:</p><ul><li><p>Vendor cost: $100K/year</p></li><li><p>DIY build cost: 2 FTE-years (at $150K fully-loaded = $300K)</p></li><li><p>DIY maintenance: 0.5 FTE/year ongoing ($75K/year)</p></li></ul><p><strong>Break-even: 4+ years</strong>, assuming no scope expansion and consistent maintenance allocation.</p><p>If you don&#8217;t have specific needs that vendors can&#8217;t meet, the vendor usually wins.</p><div><hr></div><h2>Questions to Ask Before You Build</h2><p>Before you start:</p><ol><li><p><strong>Do you have at least one engineer who WANTS to own this long-term?</strong> Not assigned to it&#8212;actively wants it.</p></li><li><p><strong>Have you actually tried to get your vendor to solve the problem?</strong> Escalated to product? Talked to their engineers? Explored workarounds?</p></li><li><p><strong>Can you articulate specifically what you need that vendors don&#8217;t offer?</strong> Vague frustration isn&#8217;t a spec. Concrete requirements are.</p></li><li><p><strong>Do you have production infrastructure experience, or will you learn on the job?</strong> Learning is fine&#8212;but budget the cost.</p></li><li><p><strong>What happens when that engineer leaves?</strong> If the answer is &#8220;we&#8217;re stuck,&#8221; that&#8217;s a single point of failure.</p></li><li><p><strong>Are you building a tool or building a product?</strong> Internal tool = lower bar. Product for others = dramatically higher bar.</p></li></ol><p>If you can&#8217;t answer these confidently, the &#8220;biased towards buy&#8221; approach is probably correct.</p><div><hr></div><h2>Closing</h2><p>That LinkedIn commenter was right to push back. &#8220;Biased towards buy&#8221; is often the right bias.</p><p>The GigaChad GRC posts aren&#8217;t meant to convince everyone to build. They&#8217;re meant to show it&#8217;s possible for those who have the right reasons, the right capacity, and the right expectations.</p><p>The vendor monopoly is optional. But so is the DIY path.</p><p>The best GRC platform is the one that lets you focus on GRC, not on maintaining the platform. Sometimes that&#8217;s a commercial solution with good-enough flexibility. Sometimes that&#8217;s a custom build you own completely.</p><p>Know which one you are before you start.</p><div><hr></div><p><em>The author built his own GRC platform and doesn&#8217;t regret it&#8212;but wouldn&#8217;t recommend it to everyone. Still drinks too much coffee.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.grc.engineering/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 GRC Engineering Community Blog! 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>]]></content:encoded></item><item><title><![CDATA[The Architecture Behind GigaChad GRC: Patterns for Building Extensible Compliance Platforms]]></title><description><![CDATA[A follow-up to Building Your Own GRC Stack]]></description><link>https://blog.grc.engineering/p/the-architecture-behind-gigachad</link><guid isPermaLink="false">https://blog.grc.engineering/p/the-architecture-behind-gigachad</guid><dc:creator><![CDATA[Chad Fryer]]></dc:creator><pubDate>Mon, 12 Jan 2026 16:50:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b755ab26-2030-411a-8342-3225460c76db_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When I published the first post about building GigaChad GRC, I expected a few comments and maybe some skeptical DMs. What I got instead was a wave of practitioners asking the same question: <em>how did you actually architect this thing?</em></p><p>The original post covered the why&#8212;the frustration with vendor lock-in, the six-figure platforms that couldn&#8217;t match Google Apps Script, the decision to stop asking permission. But it only scratched the surface of the how. This post goes deeper.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.grc.engineering/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 GRC Engineering Community Blog! 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><p>Over the past months, I&#8217;ve received pull requests, feature suggestions, and deployment stories from practitioners who&#8217;ve actually run this in production. That feedback has validated some architectural decisions and exposed others as premature optimization. Here&#8217;s what I&#8217;ve learned about building a GRC platform that doesn&#8217;t paint you into a corner.</p><div><hr></div><h2>Why Architecture Matters More in GRC</h2><p>Most software architecture advice assumes you&#8217;re building a product with a defined scope. GRC is different. Every organization has a unique control environment, bespoke risk categories, industry-specific frameworks, and auditors with their own preferences. A rigid architecture becomes a straitjacket.</p><p>The goal wasn&#8217;t to build a platform that handles every use case out of the box. It was to build a platform where adding your use case doesn&#8217;t require a fork.</p><p>That distinction shaped every major decision.</p><h2>The Case for Microservices (And When It Actually Makes Sense)</h2><p>Conventional wisdom says start monolithic, split later. For most applications, that&#8217;s right. But GRC has a property that makes early decomposition worthwhile: <strong>naturally bounded domains</strong>.</p><p>Controls are not risks. Vendors are not audits. Policies are not questionnaires. These domains have clear boundaries, different stakeholders, and independent lifecycles. When your auditor asks for changes to the audit portal, you shouldn&#8217;t be touching the risk register codebase.</p><h3>The Domain Boundaries</h3><p>GigaChad GRC splits into six core services:</p><p><strong>Controls</strong> - Control library, evidence management, testing<br><strong>Frameworks</strong> - Framework requirements, risk management, assessments<br><strong>Policies</strong> - Policy lifecycle, versions, approvals<br><strong>TPRM</strong> - Vendors, assessments, contracts<br><strong>Trust</strong> - Questionnaires, knowledge base, trust center<br><strong>Audit</strong> - Audit Management, requests, findings, auditor portal</p><p>Each service owns its domain completely. The Controls service doesn't know how vendor assessments work. The Audit service doesn't care about policy approval workflows. They communicate through well-defined APIs and a shared event bus when necessary.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zMWp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268fd2d7-bb25-4885-8f71-4d76abc8bbd8_1128x514.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zMWp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268fd2d7-bb25-4885-8f71-4d76abc8bbd8_1128x514.heic 424w, https://substackcdn.com/image/fetch/$s_!zMWp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268fd2d7-bb25-4885-8f71-4d76abc8bbd8_1128x514.heic 848w, https://substackcdn.com/image/fetch/$s_!zMWp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268fd2d7-bb25-4885-8f71-4d76abc8bbd8_1128x514.heic 1272w, https://substackcdn.com/image/fetch/$s_!zMWp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268fd2d7-bb25-4885-8f71-4d76abc8bbd8_1128x514.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zMWp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268fd2d7-bb25-4885-8f71-4d76abc8bbd8_1128x514.heic" width="1128" height="514" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/268fd2d7-bb25-4885-8f71-4d76abc8bbd8_1128x514.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:514,&quot;width&quot;:1128,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:40125,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184150802?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268fd2d7-bb25-4885-8f71-4d76abc8bbd8_1128x514.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zMWp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268fd2d7-bb25-4885-8f71-4d76abc8bbd8_1128x514.heic 424w, https://substackcdn.com/image/fetch/$s_!zMWp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268fd2d7-bb25-4885-8f71-4d76abc8bbd8_1128x514.heic 848w, https://substackcdn.com/image/fetch/$s_!zMWp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268fd2d7-bb25-4885-8f71-4d76abc8bbd8_1128x514.heic 1272w, https://substackcdn.com/image/fetch/$s_!zMWp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268fd2d7-bb25-4885-8f71-4d76abc8bbd8_1128x514.heic 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><h3>What Actually Worked</h3><p><strong>Independent deployment.</strong> When I rebuilt the Audit service to add the external auditor portal&#8212;complete with access codes, temporary permissions, and document request workflows&#8212;I deployed it without touching any other service. Zero coordination. Zero risk to the control testing that was running in production.</p><p><strong>Isolated failure domains.</strong> A bug in the Trust service&#8217;s questionnaire parsing doesn&#8217;t crash risk assessments. Services can be unhealthy independently, and the platform degrades gracefully.</p><p><strong>Focused codebases.</strong> Each service is small enough to hold in your head. New contributors can understand the Policies service in an afternoon without learning how vendor assessments work.</p><h3>What Didn&#8217;t Work (And What I Changed)</h3><p><strong>Distributed debugging is painful.</strong> When a request touches three services, tracing the failure path requires correlating logs across containers. I added correlation IDs to every request, propagated through the event bus and HTTP headers. Should have done it from day one.</p><p><strong>Service discovery added friction.</strong> Early on, I was doing manual service location through environment variables. It worked, but adding a new service meant updating every other service&#8217;s configuration. Traefik as the API gateway solved this&#8212;services register themselves, and routing happens automatically.</p><p><strong>Initial setup overhead.</strong> Six services means six things to start, monitor, and maintain. For development, I created a single <code>docker compose up</code> that brings everything up correctly ordered. For practitioners who just want to evaluate the platform, there&#8217;s now a <code>./start.sh</code> that handles the complexity.</p><h3>The Real Lesson</h3><p>The microservices approach worked because the domain boundaries were clear before I wrote any code. If you&#8217;re building GRC tooling and your domains blur together&#8212;if you can&#8217;t articulate where controls end and risks begin&#8212;start with a modular monolith. Microservices are a deployment strategy, not an architecture. Get the boundaries right first.</p><div><hr></div><h2>API-First: If You Can&#8217;t Script It, You Haven&#8217;t Built It</h2><p>Here&#8217;s a test for any GRC platform: can you create a control, link it to a framework requirement, upload evidence, and mark it tested&#8212;entirely through API calls, with no UI?</p><p>If the answer is no, you&#8217;ve built a dashboard, not a platform.</p><p>Every feature in GigaChad GRC is an API endpoint first. The React frontend is just one client among many. This isn&#8217;t architectural purity for its own sake&#8212;it&#8217;s the foundation for everything that makes the platform actually useful.</p><h3>Why API-First Matters for GRC</h3><p><strong>Automation scripts replace manual evidence collection.</strong> That AWS config you need to pull quarterly? Script it. The GitHub branch protection rules auditors want screenshots of? API call to GitHub, API call to upload evidence, done. The <a href="https://github.com/YOUR_ORG/gigachad-grc/tree/main/mcp-servers/grc-evidence">grc-evidence MCP server</a> does exactly this for AWS, Azure, GitHub, Okta, Google Workspace, and Jamf.</p><p><strong>AI integration becomes possible.</strong> The <a href="https://github.com/YOUR_ORG/gigachad-grc/tree/main/mcp-servers/grc-ai-assistant">grc-ai-assistant MCP server</a> uses the platform APIs to provide risk analysis, control recommendations, and policy drafting. It couldn&#8217;t exist if the platform required clicking through UIs.</p><p><strong>Custom integrations don&#8217;t require forks.</strong> Want to sync controls with Jira? Pull risk data into your data warehouse? Trigger Slack notifications on audit findings? Build it against the API. Your integration survives platform upgrades.</p><h3>The MCP Server Architecture</h3><p>Model Context Protocol servers are the ultimate test of API-first design. They&#8217;re external processes that interact with the platform entirely through APIs, enabling AI-powered automation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!X8GK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6fdbe24-979d-452e-a957-ad49f1f11881_1054x664.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X8GK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6fdbe24-979d-452e-a957-ad49f1f11881_1054x664.heic 424w, https://substackcdn.com/image/fetch/$s_!X8GK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6fdbe24-979d-452e-a957-ad49f1f11881_1054x664.heic 848w, https://substackcdn.com/image/fetch/$s_!X8GK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6fdbe24-979d-452e-a957-ad49f1f11881_1054x664.heic 1272w, https://substackcdn.com/image/fetch/$s_!X8GK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6fdbe24-979d-452e-a957-ad49f1f11881_1054x664.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X8GK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6fdbe24-979d-452e-a957-ad49f1f11881_1054x664.heic" width="1054" height="664" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e6fdbe24-979d-452e-a957-ad49f1f11881_1054x664.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:664,&quot;width&quot;:1054,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:42249,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184150802?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6fdbe24-979d-452e-a957-ad49f1f11881_1054x664.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!X8GK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6fdbe24-979d-452e-a957-ad49f1f11881_1054x664.heic 424w, https://substackcdn.com/image/fetch/$s_!X8GK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6fdbe24-979d-452e-a957-ad49f1f11881_1054x664.heic 848w, https://substackcdn.com/image/fetch/$s_!X8GK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6fdbe24-979d-452e-a957-ad49f1f11881_1054x664.heic 1272w, https://substackcdn.com/image/fetch/$s_!X8GK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6fdbe24-979d-452e-a957-ad49f1f11881_1054x664.heic 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>Each MCP server is a standalone package that can be used with any AI tool supporting the protocol&#8212;Claude, Cursor, custom agents. They consume the platform APIs to:</p><ul><li><p><strong>grc-evidence</strong>: Collect evidence from cloud providers and security tools automatically</p></li><li><p><strong>grc-compliance</strong>: Run control tests, validate policies, generate reports</p></li><li><p><strong>grc-ai-assistant</strong>: Provide AI-powered analysis, recommendations, and drafting</p></li></ul><p>The MCP servers proved the architecture. If an external AI tool can operate the platform effectively through APIs alone, the API design is working.</p><h3>Swagger as a First-Class Citizen</h3><p>Every service exposes Swagger documentation at /api/docs. This isn&#8217;t generated as an afterthought&#8212;it&#8217;s maintained as part of the development workflow. When someone opens a PR that adds an endpoint, the Swagger docs are part of the review.</p><p>The result: practitioners can explore the API interactively before writing any code. No guessing at parameter names or response shapes.</p><div><hr></div><h2>Shared Infrastructure: The Glue That Doesn&#8217;t Become Glue Code</h2><p>Six microservices sounds clean until you realize they all need authentication, database access, file storage, event publishing, and consistent error handling. Duplicate that code across services and you&#8217;ve created a maintenance nightmare.</p><p>The services/shared/ library is the solution&#8212;a TypeScript package consumed by every service, providing:</p><h3>What&#8217;s Shared</h3><p><strong>Authentication middleware.</strong> Keycloak JWT validation, role extraction, permission checking. Every service uses the same @Auth() decorators and guards. Add a new role in Keycloak, and every service respects it immediately.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!or6X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52372a1e-078c-440a-8651-fcba535b7562_962x326.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!or6X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52372a1e-078c-440a-8651-fcba535b7562_962x326.heic 424w, https://substackcdn.com/image/fetch/$s_!or6X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52372a1e-078c-440a-8651-fcba535b7562_962x326.heic 848w, https://substackcdn.com/image/fetch/$s_!or6X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52372a1e-078c-440a-8651-fcba535b7562_962x326.heic 1272w, https://substackcdn.com/image/fetch/$s_!or6X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52372a1e-078c-440a-8651-fcba535b7562_962x326.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!or6X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52372a1e-078c-440a-8651-fcba535b7562_962x326.heic" width="962" height="326" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/52372a1e-078c-440a-8651-fcba535b7562_962x326.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:326,&quot;width&quot;:962,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:23767,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184150802?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52372a1e-078c-440a-8651-fcba535b7562_962x326.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!or6X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52372a1e-078c-440a-8651-fcba535b7562_962x326.heic 424w, https://substackcdn.com/image/fetch/$s_!or6X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52372a1e-078c-440a-8651-fcba535b7562_962x326.heic 848w, https://substackcdn.com/image/fetch/$s_!or6X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52372a1e-078c-440a-8651-fcba535b7562_962x326.heic 1272w, https://substackcdn.com/image/fetch/$s_!or6X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52372a1e-078c-440a-8651-fcba535b7562_962x326.heic 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><strong>Storage abstraction.</strong> Evidence files might live on local disk, S3-compatible storage (RustFS), or Azure Blob. The shared storage service provides a consistent interface:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!APte!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2e22fd0-1a05-4f01-95d7-eb39909a831b_1218x214.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!APte!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2e22fd0-1a05-4f01-95d7-eb39909a831b_1218x214.heic 424w, https://substackcdn.com/image/fetch/$s_!APte!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2e22fd0-1a05-4f01-95d7-eb39909a831b_1218x214.heic 848w, https://substackcdn.com/image/fetch/$s_!APte!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2e22fd0-1a05-4f01-95d7-eb39909a831b_1218x214.heic 1272w, https://substackcdn.com/image/fetch/$s_!APte!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2e22fd0-1a05-4f01-95d7-eb39909a831b_1218x214.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!APte!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2e22fd0-1a05-4f01-95d7-eb39909a831b_1218x214.heic" width="1218" height="214" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f2e22fd0-1a05-4f01-95d7-eb39909a831b_1218x214.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:214,&quot;width&quot;:1218,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:31158,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184150802?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2e22fd0-1a05-4f01-95d7-eb39909a831b_1218x214.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!APte!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2e22fd0-1a05-4f01-95d7-eb39909a831b_1218x214.heic 424w, https://substackcdn.com/image/fetch/$s_!APte!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2e22fd0-1a05-4f01-95d7-eb39909a831b_1218x214.heic 848w, https://substackcdn.com/image/fetch/$s_!APte!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2e22fd0-1a05-4f01-95d7-eb39909a831b_1218x214.heic 1272w, https://substackcdn.com/image/fetch/$s_!APte!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2e22fd0-1a05-4f01-95d7-eb39909a831b_1218x214.heic 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Swap backends by changing environment variables. No code changes.</p><p><strong>Event bus.</strong> When controls need to notify the audit service about test completions, they publish events to Redis. The audit service subscribes without knowing which service published.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QJ5i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a294ef-0b0d-4684-b69d-d4c56c3bd066_1172x314.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QJ5i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a294ef-0b0d-4684-b69d-d4c56c3bd066_1172x314.heic 424w, https://substackcdn.com/image/fetch/$s_!QJ5i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a294ef-0b0d-4684-b69d-d4c56c3bd066_1172x314.heic 848w, https://substackcdn.com/image/fetch/$s_!QJ5i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a294ef-0b0d-4684-b69d-d4c56c3bd066_1172x314.heic 1272w, https://substackcdn.com/image/fetch/$s_!QJ5i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a294ef-0b0d-4684-b69d-d4c56c3bd066_1172x314.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QJ5i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a294ef-0b0d-4684-b69d-d4c56c3bd066_1172x314.heic" width="1172" height="314" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e2a294ef-0b0d-4684-b69d-d4c56c3bd066_1172x314.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:314,&quot;width&quot;:1172,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:32119,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184150802?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a294ef-0b0d-4684-b69d-d4c56c3bd066_1172x314.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QJ5i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a294ef-0b0d-4684-b69d-d4c56c3bd066_1172x314.heic 424w, https://substackcdn.com/image/fetch/$s_!QJ5i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a294ef-0b0d-4684-b69d-d4c56c3bd066_1172x314.heic 848w, https://substackcdn.com/image/fetch/$s_!QJ5i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a294ef-0b0d-4684-b69d-d4c56c3bd066_1172x314.heic 1272w, https://substackcdn.com/image/fetch/$s_!QJ5i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a294ef-0b0d-4684-b69d-d4c56c3bd066_1172x314.heic 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>This keeps services decoupled while enabling necessary coordination.</p><p><strong>Type definitions.</strong> Shared TypeScript types ensure the Controls service and Audit service agree on what a &#8220;control&#8221; looks like. No runtime surprises from schema drift.</p><p><strong>Prisma client.</strong> One database schema, one Prisma client, consumed by all services. Migrations run once. The schema is the source of truth.</p><h3>Why a Shared Library Instead of Shared Services</h3><p>I considered the alternative: dedicated auth service, dedicated storage service, dedicated event service. Each microservice would call these shared services via HTTP.</p><p>The problem: latency multiplication. A single request that needs auth, then storage, then events becomes four network hops. For a GRC platform where users are clicking through controls and uploading evidence, that latency compounds into frustration.</p><p>The shared library approach means auth happens in-process. Storage calls go directly to the backend. The services share code, not network round-trips.</p><h3>The Single Database Decision</h3><p>Yes, all services share one PostgreSQL database. This is controversial in microservices circles, but for GRC it&#8217;s pragmatic.</p><p><strong>The reality:</strong> GRC data is deeply interconnected. Controls link to frameworks. Risks link to controls. Evidence links to everything. Enforcing strict database-per-service boundaries would mean constant API calls between services for basic operations, or maintaining complex data synchronization.</p><p><strong>The tradeoff:</strong> Services must respect each other&#8217;s tables. The Controls service doesn&#8217;t write directly to audit tables. This is enforced through code review and convention, not database permissions. It works because the team is small and the domain boundaries are clear.</p><p><strong>When to split:</strong> If services need to scale independently or you have teams that can&#8217;t coordinate, separate databases make sense. For most GRC implementations, the operational simplicity of a single database wins.</p><div><hr></div><h2>Extensibility Without Fork Anxiety</h2><p>Here&#8217;s the scenario that kills most open-source platforms: a practitioner needs something slightly different. They fork. They modify. Six months later, they&#8217;re maintaining a divergent codebase that can&#8217;t take upstream updates. They might as well have built from scratch.</p><p>GigaChad GRC is designed with explicit extension points that don&#8217;t require touching core code.</p><h3>Adding Integrations</h3><p>The integration architecture follows a consistent pattern. Every integration implements the same interface:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZZKV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaca4206-934c-4eb8-b4eb-db3a42813477_946x304.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZZKV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaca4206-934c-4eb8-b4eb-db3a42813477_946x304.heic 424w, https://substackcdn.com/image/fetch/$s_!ZZKV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaca4206-934c-4eb8-b4eb-db3a42813477_946x304.heic 848w, https://substackcdn.com/image/fetch/$s_!ZZKV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaca4206-934c-4eb8-b4eb-db3a42813477_946x304.heic 1272w, https://substackcdn.com/image/fetch/$s_!ZZKV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaca4206-934c-4eb8-b4eb-db3a42813477_946x304.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZZKV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaca4206-934c-4eb8-b4eb-db3a42813477_946x304.heic" width="946" height="304" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/caca4206-934c-4eb8-b4eb-db3a42813477_946x304.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:304,&quot;width&quot;:946,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:28365,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184150802?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaca4206-934c-4eb8-b4eb-db3a42813477_946x304.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZZKV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaca4206-934c-4eb8-b4eb-db3a42813477_946x304.heic 424w, https://substackcdn.com/image/fetch/$s_!ZZKV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaca4206-934c-4eb8-b4eb-db3a42813477_946x304.heic 848w, https://substackcdn.com/image/fetch/$s_!ZZKV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaca4206-934c-4eb8-b4eb-db3a42813477_946x304.heic 1272w, https://substackcdn.com/image/fetch/$s_!ZZKV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaca4206-934c-4eb8-b4eb-db3a42813477_946x304.heic 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>Adding a new integration means:</p><ol><li><p>Create a new collector implementing the interface</p></li><li><p>Register it in the collector registry</p></li><li><p>Done</p></li></ol><p>Your custom integration for that weird compliance tool your industry requires? It works the same way as the AWS integration. Submit a PR if it might help others. Keep it private if it&#8217;s organization-specific.</p><h3>Adding Framework Requirements</h3><p>Frameworks are data, not code. Adding NIST 800-53 or a custom internal framework means:</p><ol><li><p>Create a JSON file with requirements</p></li><li><p>Import via the API or seed script</p></li><li><p>Map to existing controls</p></li></ol><p>The platform doesn&#8217;t care if it&#8217;s SOC 2 or your proprietary framework. The data model is generic.</p><h3>Adding Services</h3><p>Need a module that doesn&#8217;t exist? The architecture supports adding new services without modifying existing ones:</p><ol><li><p>Create a new NestJS service following the established patterns</p></li><li><p>Import the shared library for auth, storage, events</p></li><li><p>Add a Dockerfile following the existing template</p></li><li><p>Register with Traefik via labels</p></li><li><p>The frontend can call it like any other service</p></li></ol><p>The Audit service was added this way after initial launch. Zero changes to Controls, Frameworks, or any other service.</p><h3>MCP Servers as the Ultimate Extension</h3><p>For automation that doesn&#8217;t fit neatly into the platform, MCP servers provide unlimited flexibility:</p><ul><li><p>Run on your infrastructure</p></li><li><p>Use any language (TypeScript reference implementations provided)</p></li><li><p>Consume platform APIs for data</p></li><li><p>Integrate with AI tools or run standalone</p></li><li><p>No deployment coordination with the platform</p></li></ul><p>This is the escape hatch that prevents forks. If the platform doesn&#8217;t do something, script it via API. If you need AI assistance, build an MCP server. The core platform stays maintainable.</p><div><hr></div><h2>Deployment Flexibility: Your Infrastructure, Your Rules</h2><p>The same codebase deploys three different ways:</p><h3>Option 1: Terraform for AWS</h3><p>Full enterprise deployment with:</p><ul><li><p>VPC with proper isolation (public/private subnets)</p></li><li><p>ECS Fargate services with auto-scaling</p></li><li><p>RDS PostgreSQL with encryption and automated backups</p></li><li><p>ElastiCache Redis cluster</p></li><li><p>ALB with SSL termination</p></li><li><p>S3 for evidence storage</p></li><li><p>Secrets Manager for credentials</p></li></ul><p>Run terraform apply and have production infrastructure in 30 minutes. The Terraform modules are in terraform/modules/ and document every decision.</p><h3>Option 2: Docker Compose for Single Server</h3><p>For teams that need production-ready deployment without AWS complexity:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7vfj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72fb19fc-5ba8-4182-b482-ac30cc726c90_754x102.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7vfj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72fb19fc-5ba8-4182-b482-ac30cc726c90_754x102.heic 424w, https://substackcdn.com/image/fetch/$s_!7vfj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72fb19fc-5ba8-4182-b482-ac30cc726c90_754x102.heic 848w, https://substackcdn.com/image/fetch/$s_!7vfj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72fb19fc-5ba8-4182-b482-ac30cc726c90_754x102.heic 1272w, https://substackcdn.com/image/fetch/$s_!7vfj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72fb19fc-5ba8-4182-b482-ac30cc726c90_754x102.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7vfj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72fb19fc-5ba8-4182-b482-ac30cc726c90_754x102.heic" width="754" height="102" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/72fb19fc-5ba8-4182-b482-ac30cc726c90_754x102.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:102,&quot;width&quot;:754,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9299,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/184150802?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72fb19fc-5ba8-4182-b482-ac30cc726c90_754x102.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7vfj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72fb19fc-5ba8-4182-b482-ac30cc726c90_754x102.heic 424w, https://substackcdn.com/image/fetch/$s_!7vfj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72fb19fc-5ba8-4182-b482-ac30cc726c90_754x102.heic 848w, https://substackcdn.com/image/fetch/$s_!7vfj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72fb19fc-5ba8-4182-b482-ac30cc726c90_754x102.heic 1272w, https://substackcdn.com/image/fetch/$s_!7vfj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72fb19fc-5ba8-4182-b482-ac30cc726c90_754x102.heic 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>This gives you:</p><ul><li><p>All services running on one machine</p></li><li><p>PostgreSQL, Redis, Keycloak, RustFS included</p></li><li><p>Traefik handling routing and SSL</p></li><li><p>Automatic health checks and restarts</p></li><li><p>Backup scripts included</p></li></ul><p>Many production deployments run this way. A well-provisioned single server handles more load than most GRC programs generate.</p><h3>Option 3: Managed Infrastructure (Supabase + Vercel)</h3><p>For teams who want managed services:</p><ul><li><p>Supabase for PostgreSQL</p></li><li><p>Vercel for frontend and serverless functions</p></li><li><p>External Redis (Upstash, etc.)</p></li><li><p>Cloud storage for evidence</p></li></ul><p>This path trades operational control for operational simplicity.</p><h3>The Philosophy: Works on My Laptop, Works in Production</h3><p>The same docker compose<code> up</code> that runs locally runs in production. The same environment variables. The same container images. No &#8220;works on my machine&#8221; surprises.</p><p>The Terraform modules and Docker Compose files aren&#8217;t separate configurations&#8212;they&#8217;re alternative deployment targets for identical containers.</p><div><hr></div><h2>What I&#8217;d Do Differently: The Honest Retrospective</h2><p>Community feedback and production usage revealed decisions I&#8217;d reconsider.</p><h3>Should Have Done Earlier</h3><p><strong>Correlation IDs from day one.</strong> Distributed tracing is painful to retrofit. Every HTTP request and event should carry a correlation ID that flows through the entire request path. I added this after debugging a cross-service issue took two hours.</p><p><strong>Feature flags.</strong> Some organizations need controls but not risks. Some need TPRM but not audits. Adding feature flags to disable modules without removing code would have made the platform more adaptable. This is now partially implemented but should have been foundational.</p><p><strong>Better migration tooling.</strong> Database migrations work, but rollback is manual. Organizations upgrading production need confidence that a bad migration won&#8217;t require database restoration.</p><h3>Decisions That Paid Off</h3><p><strong>API-first from the start.</strong> The MCP servers validated this immediately. AI tooling integration was trivial because the APIs were already comprehensive.</p><p><strong>Shared library over shared services.</strong> In-process shared code keeps latency manageable and deployment simple.</p><p><strong>Traefik as the gateway.</strong> Automatic service discovery and configuration via Docker labels eliminated a category of configuration management.</p><p><strong>RustFS over MinIO.</strong> Switching to <a href="https://github.com/rustfs/rustfs">RustFS</a> for S3-compatible storage reduced resource usage and stayed Apache 2.0 licensed. The storage abstraction made the swap transparent.</p><h3>Community Feedback That Changed My Thinking</h3><p>Several practitioners asked for <strong>simpler initial deployment</strong>&#8212;the full microservices setup was intimidating for evaluation. The ./start.sh script and simplified getting-started guide came directly from this feedback.</p><p>Others wanted <strong>more granular permissions</strong>. The initial RBAC model was too coarse. The current implementation supports permissions like controls:read, controls:write, controls:test&#8212;fine-grained enough for real organizational structures.</p><p>The most repeated request: <strong>better documentation for extending the platform</strong>. The architecture supports extension, but knowing where to start wasn&#8217;t obvious. This post is part of addressing that.</p><div><hr></div><h2>Closing: Architecture as Philosophy</h2><p>Vendor platforms optimize architecture for their business model. API access becomes a premium tier because restricting it drives upgrades. Customization requires professional services because flexibility cannibilizes support revenue. The architecture serves the vendor.</p><p>Practitioner-built platforms optimize for the actual work. APIs are open because automation is the point. Customization is encouraged because every organization is different. The architecture serves the user.</p><p>The decisions documented here&#8212;microservices along domain boundaries, API-first design, shared infrastructure without shared services, explicit extension points, flexible deployment&#8212;aren&#8217;t technically novel. They&#8217;re the obvious choices when you&#8217;re building for yourself instead of building for profit extraction.</p><p>That&#8217;s the real lesson. Technical decisions compound. Every choice either opens doors or closes them. Vendor platforms close doors strategically&#8212;they call it their moat. Practitioner platforms keep doors open because we&#8217;re the ones who need to walk through them.</p><div><hr></div><h2>Get Involved</h2><p>The codebase is on GitHub. The architecture described here is what you&#8217;ll find in services/. The MCP servers are in mcp-servers/. The Terraform modules are in terraform/modules/.</p><p>If you&#8217;ve built extensions, integrations, or just found better ways to do something&#8212;pull requests are welcome. If you&#8217;ve deployed this in production and have war stories&#8212;the GRC Engineering Discord wants to hear them.</p><p>The vendor monopoly on GRC tooling was always optional. The architecture to replace it is here.</p><div><hr></div><p><em>The author still maintains this platform, still drinks too much coffee, and still believes practitioners build better tools than vendors.</em></p><div><hr></div><p><strong>Related Links:</strong></p><ul><li><p><a href="https://github.com/grcengineering/gigachad-grc">GigaChad GRC on GitHub</a></p></li><li><p><a href="https://blog.grc.engineering/p/building-your-own-grc-stack">Building Your Own GRC Stack (Original Post)</a></p></li><li><p><a href="https://discord.gg/grc-engineering">GRC Engineering Community Discord</a></p></li><li><p><a href="https://grc.engineering/">GRC Engineering Manifesto</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.grc.engineering/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 GRC Engineering Community Blog! 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>]]></content:encoded></item><item><title><![CDATA[GRC Engineering in 2026]]></title><description><![CDATA[Hopes and dreams for the future of GRC in the new year]]></description><link>https://blog.grc.engineering/p/grc-engineering-in-2026</link><guid isPermaLink="false">https://blog.grc.engineering/p/grc-engineering-in-2026</guid><dc:creator><![CDATA[Justin Pagano]]></dc:creator><pubDate>Mon, 05 Jan 2026 15:08:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!MAi1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F201aae10-3345-4522-b0af-a57df78bd203_1584x672.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MAi1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F201aae10-3345-4522-b0af-a57df78bd203_1584x672.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MAi1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F201aae10-3345-4522-b0af-a57df78bd203_1584x672.heic 424w, https://substackcdn.com/image/fetch/$s_!MAi1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F201aae10-3345-4522-b0af-a57df78bd203_1584x672.heic 848w, https://substackcdn.com/image/fetch/$s_!MAi1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F201aae10-3345-4522-b0af-a57df78bd203_1584x672.heic 1272w, https://substackcdn.com/image/fetch/$s_!MAi1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F201aae10-3345-4522-b0af-a57df78bd203_1584x672.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MAi1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F201aae10-3345-4522-b0af-a57df78bd203_1584x672.heic" width="1456" height="618" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/201aae10-3345-4522-b0af-a57df78bd203_1584x672.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:618,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:179481,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.grc.engineering/i/183556105?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F201aae10-3345-4522-b0af-a57df78bd203_1584x672.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!MAi1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F201aae10-3345-4522-b0af-a57df78bd203_1584x672.heic 424w, https://substackcdn.com/image/fetch/$s_!MAi1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F201aae10-3345-4522-b0af-a57df78bd203_1584x672.heic 848w, https://substackcdn.com/image/fetch/$s_!MAi1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F201aae10-3345-4522-b0af-a57df78bd203_1584x672.heic 1272w, https://substackcdn.com/image/fetch/$s_!MAi1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F201aae10-3345-4522-b0af-a57df78bd203_1584x672.heic 1456w" sizes="100vw" fetchpriority="high"></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>New year, new us! With a new year upon us, I&#8217;ve been thinking a lot about what I expect - or maybe just hope - GRC will look like by the end of 2026. </p><p>In 2025, the excitement and momentum around <a href="https://grc.engineering">GRC Engineering</a> exploded among practitioners and vendors alike. </p><p>In 2026, I&#8217;m optimistic we will see big leaps forward in how GRC programs, platforms, and tools are designed with GRC Engineering principles and values in mind.</p><p>Here&#8217;s what I&#8217;m hoping this future will look like.</p><h1>Autonomous GRC</h1><p>AI will have transitioned from being just a copilot or use case-specific assistant and will instead operate as full fledged agentic extensions of GRC teams.</p><p>GRC platforms will provide AI agents that aren&#8217;t just confined to work within the platforms they are built in but also will be able to operate outside those platforms too - just like their human counterparts can. Autonomous Security Risk Analysts, Compliance Analysts, Trust Analysts, etc. will exist more and more as agentic AI team members executing core GRC program operations and functions.</p><p>Security, safety, and alignment controls and mechanisms will be incredibly important, of course. We&#8217;ll see more investment in prompt injection mitigations, tried-and-true human-in-the-loop (HITL) patterns, and AI-native least-privilege access management. It won&#8217;t be perfect, but it will be better than it is today and will allow pioneering GRC teams to feel comfortable enough with incorporating autonomous GRC agents into their programs. </p><p>I also expect to see more AI agent providers, including GRC platform vendors, obtain AIUC-1 certification and insurance coverage as a way to rapidly build strong assurance for customers (and to better tolerate AI-related risks for themselves) around the safety and security of their AI agents.</p><h1>Governance</h1><p>GRC teams will stop treating policies, standards, and procedures as documents to publish and review on an annual basis and instead start treating them as what they were always meant to be: the foundational principles/requirements that security programs are built on and that get <em><strong>systematically integrated into processes and systems</strong></em>. </p><p>This means GRC teams will collaborate more with Platform Engineering, Security Engineering, IT Engineering, etc. teams to have 1:1 mappings between security policy/standard requirements and policy-as-code guardrails baked into version control systems, CI/CD pipelines, endpoint/fleet management systems, and runtime monitoring systems. </p><p>This also means that <em>de facto</em> policies/standards that non-GRC teams have already implemented in practice will be added to the &#8220;law of the land&#8221; documentation that GRC teams own. Policies, standards, and controls-in-practice will fully align 1:1 without any disconnects. Furthermore, security awareness training will map 1:1 with security policies, standards, and procedures to ensure workforce personnel are fully aligned on what&#8217;s expected of them to uphold their organization&#8217;s security program, on day 1 and regularly thereafter.</p><h1>Risk</h1><p>Cyber risk quantification (CRQ) becomes a must-have capability for GRC programs. CRQ capabilities will become more prominent in GRC platforms, both for first-party risk and third-party risk management. </p><p>We&#8217;ll see a convergence and integration between CRQ as a strategic lens for prioritizing security investments, and related tactical security tools/programs, such as full-stack vulnerability risk management (i.e. CTEM, CNAPP, etc.), threat detection &amp; response, cloud security, application security, etc., resulting in a noticeable increase in organizations standing up <em><strong><a href="https://rich-76605.medium.com/a-cisos-intro-to-the-risk-operations-center-roc-1c8ff7f85e1c">Risk Operations Centers (ROCs)</a></strong></em> as the gold standard model for how Risk teams function.</p><p>GRC teams will also start to focus much more on first-party risk mitigations in the context of their third-party risk management programs, recognizing they have limited leverage to effect changes within their vendors&#8217; control environments and are better off mitigating third-party risk by implementing first-party controls. </p><p>All of these shifts will also drive GRC teams to find automated ways to monitor how their third-party vendor use cases are changing over time to ensure third-party risk exposure is continuously monitored and managed, as opposed to quarterly, semi-annual, or annual reassessments. For example:</p><ul><li><p>New OAuth-based app integrations setup with an existing third-party system</p></li><li><p>New user accounts created in a third-party system using email addresses outside of your organization&#8217;s domain</p></li><li><p>New IP addresses showing up in third-party system logs that are well-known egress IPs for a widely used SaaS platform </p></li><li><p>New sensitive data types being exposed to/accessed by a third-party system that was originally only approved for use with low sensitivity data types</p></li></ul><p>All of these kinds of &#8220;use case drift&#8221; concerns will be much more easily addressed by GRC teams, in part thanks to new capabilities being introduced in modern GRC/TPRM platforms.</p><p>Finally, we will begin moving away from third-party <em><strong>compliance</strong></em> management to a future state of true third-party <em><strong>risk</strong></em> management.</p><h1>Compliance</h1><p>&#8220;Security Compliance&#8221; in the sense of continuous control monitoring and audit operations will hopefully see some additional changes not too different from how much this space has been transforming over the past few years. Rigid control monitoring workflows will be much more customized by GRC teams, whether or not their GRC platforms become much more customizable themselves. </p><p>Control monitoring evidence will be <em><strong>fully composable</strong></em>, so that multi-component controls can finally be comprehensively and consistently monitored for operating effectiveness over time. For example: a WAF control must be understood as a combination of proper DNS record configurations, WAF rule configurations, and network/host-based firewall rule configurations in order for it to be properly monitored for operating effectiveness. If a WAF product is implemented, DNS records are properly configured, and WAF rules are configured in blocking mode, <strong>but</strong> network/host-based firewall rules allow ingress traffic from non-WAF sources, the WAF can be trivially bypassed and thus this control cannot be considered to be designed effectively nor operating effectively.</p><h1>Trust &amp; Assurance</h1><p>Similar to how we will see the emergence of the ROC as a new standard for how Risk programs function, we will see the emergence of the <em><strong>Trust Operations Centers (TOCs)</strong></em> as an emerging standard for how Trust programs are designed and function. </p><p>Trust programs will be much more tightly integrated with the end-to-end customer experience (i.e. &#8220;CX 360&#8221;). For example: customer security requirements expressed in the form of contract stipulations will be mapped and tracked by Trust teams with their Sales and Product partners to ensure that these requirements are treated like customer feature/use case requests. Likewise, tracking similar and identical customer security requirements across all customers will reveal a need to change underlying policies and standards across the board, instead of fooling ourselves into thinking we can and should try to commit to e.g. 8 different security incident notification timeframe requirements. </p><p>Additionally, Trust Centers will become much more self-service than they are today. Customers won&#8217;t have to talk to a human at your organization if they don&#8217;t want to. Whatever security questionnaire they have, in whatever format they have it in, can be easily uploaded by a customer into your Trust Center, and then within a few hours or days they will get an email with a secure link to download their filled out questionnaire. Behind the scenes, Trust teams will utilize agentic AI to automatically answer as many questions as they can in these questionnaires (like they are doing today with AI-powered security questionnaire automation tools). HITL will be necessary to answer trickier questions without well-known responses already documented for them. Even if questionnaires live inside TPRM web portals, customers can submit the link to their questionnaire and be instructed to add a specific user account to their TPRM portal all through your Trust Center. Whether through traditional headless browser automation or computer use AI agents, these web portal-based questionnaires can be automatically filled out with high confidence answers with HITL being needed before submitting them back to the customer. In any case, cumbersome email threads, Zoom calls, etc. will become a rarity in this future state, driving better customer Trust Center experiences and more efficiencies for Trust teams.</p><p>Lastly, I&#8217;m naively hopeful that we will finally start to see some organizations dabble in the world of sharing real(ish)-time control monitoring metrics with their customers to drive stronger continuous assurance with them. This will likely start out as a private sharing mechanism through Trust Center APIs, but will help provide better confidence about a vendor&#8217;s controls and also pressure vendors to shore up their control posture between annual/semi-annual SOC 2/ISO audits, thus resulting in stronger control environments that create a rising tide that lifts all boats.</p>]]></content:encoded></item><item><title><![CDATA[Building Your Own GRC Stack]]></title><description><![CDATA[A Practitioner's Revolt Against Vendor Lock-In]]></description><link>https://blog.grc.engineering/p/building-your-own-grc-stack</link><guid isPermaLink="false">https://blog.grc.engineering/p/building-your-own-grc-stack</guid><dc:creator><![CDATA[Chad Fryer]]></dc:creator><pubDate>Mon, 08 Dec 2025 17:04:47 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c6b007f3-98e4-40e8-9437-791df8d6e644_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3>The Breaking Point</h3><p>Every GRC professional knows the feeling. You&#8217;ve just finished a demo with yet another compliance platform vendor, nodding along as they walk you through their slick dashboards and &#8220;enterprise-grade&#8221; features. Then comes the pricing breakdown: base platform, per-control fees, evidence automation as an add-on, API access at a premium tier, and reporting locked behind an enterprise license. Basic functionality that should be table stakes&#8212;carved up into profit centers.</p><p>But the cost isn&#8217;t even the worst part. It&#8217;s the neutering.</p><p>Want to customize a workflow? Submit a feature request. Need to pull data via API for your own analysis? That&#8217;s an enterprise feature. Trying to integrate with your existing tooling? Here&#8217;s our marketplace of pre-approved connectors. The platforms designed to make GRC teams more effective end up constraining them to the lowest common denominator of capability.</p><p>After years of watching vendors monetize mediocrity, I decided to stop asking permission. I built my own.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.grc.engineering/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 GRC Engineering Community Blog! 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><h3>The GRC Engineering Mindset</h3><p>Somewhere along the way, I discovered I wasn&#8217;t alone. The <a href="https://grc.engineering/">GRC Engineering Manifesto</a> gave language to frustrations I&#8217;d been experiencing for years&#8212;the screenshot-based evidence collection that doesn&#8217;t scale, the vendor tools built for GRC teams rather than the stakeholders who actually need to use them, the compliance automation that just produces low-value outcomes faster.</p><p>More importantly, it validated an idea I&#8217;d been circling: practitioners who live these problems daily are better positioned to solve them than vendors chasing market share. When you build something for yourself, you get immediate feedback on whether it actually works. When a vendor builds something, they optimize for demos and renewals.</p><p>That reframing&#8212;from consumer of GRC tools to builder of GRC solutions&#8212;changed how I approached the problem entirely.</p><h3>What I Built</h3><p>The final straw came when I realized our six-figure GRC platform was less capable than Google Apps Script, an Excel spreadsheet, and some dirty API calls. That&#8217;s not hyperbole&#8212;we were literally building workarounds in free tools because the paid platform couldn&#8217;t do basic things without tickets and false promises of &#8220;coming soon&#8221;.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hxqx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbddcbb33-6547-45bd-aae3-5c05c59de00b_741x1211.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hxqx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbddcbb33-6547-45bd-aae3-5c05c59de00b_741x1211.png 424w, https://substackcdn.com/image/fetch/$s_!hxqx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbddcbb33-6547-45bd-aae3-5c05c59de00b_741x1211.png 848w, https://substackcdn.com/image/fetch/$s_!hxqx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbddcbb33-6547-45bd-aae3-5c05c59de00b_741x1211.png 1272w, https://substackcdn.com/image/fetch/$s_!hxqx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbddcbb33-6547-45bd-aae3-5c05c59de00b_741x1211.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hxqx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbddcbb33-6547-45bd-aae3-5c05c59de00b_741x1211.png" width="741" height="1211" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bddcbb33-6547-45bd-aae3-5c05c59de00b_741x1211.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1211,&quot;width&quot;:741,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:142986,&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://blog.grc.engineering/i/181056450?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbddcbb33-6547-45bd-aae3-5c05c59de00b_741x1211.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_!hxqx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbddcbb33-6547-45bd-aae3-5c05c59de00b_741x1211.png 424w, https://substackcdn.com/image/fetch/$s_!hxqx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbddcbb33-6547-45bd-aae3-5c05c59de00b_741x1211.png 848w, https://substackcdn.com/image/fetch/$s_!hxqx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbddcbb33-6547-45bd-aae3-5c05c59de00b_741x1211.png 1272w, https://substackcdn.com/image/fetch/$s_!hxqx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbddcbb33-6547-45bd-aae3-5c05c59de00b_741x1211.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><figcaption class="image-caption">Runs in your infrastructure, not ours. Full stack from gateway to data layer.</figcaption></figure></div><p>So I built GigaChad GRC. A complete, modular, containerized GRC platform. From scratch. Fueled by caffeine, mass quantities of vibe coding with AI pair programming, aided by some nameless engineers loaned to me to repay a favor, and the very real pain of watching vendors charge extra for functionality that should be table stakes.</p><p>The platform is organized into specialized microservices, each handling a distinct domain: Controls and evidence management. Framework assessments with pre-loaded popular framework requirements. Policy lifecycle management with versioning and approval workflows. A full third-party risk management module covering vendors, assessments, and contracts. A trust center for security questionnaires and public-facing transparency pages. And a complete audit management system with an external auditor portal.</p><p>Risk management isn&#8217;t an afterthought bolted onto a compliance tracker&#8212;it&#8217;s a full lifecycle system. Risk identification, assessment, treatment, and monitoring with support for quantitative, qualitative, or hybrid scoring methodologies. Interactive heatmaps. Scenario modeling. Treatment tracking with accountability. The kind of risk program that actually informs decisions rather than just satisfying auditors.</p><p></p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d412b8f-af45-4b30-9498-d492aae33e7c_1764x1850.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e5cb7fdf-604c-4e37-ad74-90bb87fde2c0_1764x1850.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88aaa071-ef8f-4680-8adb-60ec5fffe552_1764x1850.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/80ece75f-3829-44d4-a94d-c5d2009415e7_1764x1850.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf41cb0c-9255-4d9f-b40c-72c9418aae5b_1764x1850.jpeg&quot;}],&quot;caption&quot;:&quot;The risk module that vendors wanted $40K/year extra for. Dashboard, heatmap, workflow tracking, register, and 20 pre-built threat scenarios&#8212;included.&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e9e0c55-521e-46ee-b93f-e35cbc643bef_1456x1210.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p>Dashboards are fully customizable because I got tired of vendors telling me which metrics matter. You want to see control implementation by framework? Risk distribution by business unit? Evidence collection velocity? Build the view you need, not the view someone else decided was &#8220;best practice.&#8221;</p><p></p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24800567-8ee9-4557-b45d-8c841751af35_1764x1850.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c12e61e9-c6cb-4854-8c95-f1eb7506b374_1764x1850.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b8917dca-044f-4cbe-b0ba-d4d00ec02a41_1764x1850.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/51f6754b-39de-4513-affb-73977fc0f396_1764x1850.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a01b8a7-0607-413d-919a-4ea26ff2d3ef_1764x1850.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf760da2-631d-406e-a4ff-43ec40f05571_1764x1850.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b2fc04c-527a-4b07-ac80-0e9021270e84_1764x1850.jpeg&quot;}],&quot;caption&quot;:&quot;Switch Dashboard. Customize. Build the view you need&#8212;not the one a vendor decided was 'best practice.&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/009f0a90-1f21-4bc2-bd1b-95eed3ea1bba_1456x1946.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p>The platform includes integrated security awareness training with pre-built SCORM packages&#8212;no separate LMS purchase required, no per-seat training vendor fees. A full employee compliance suite for policy acknowledgments, training completion tracking, and attestations. 208+ integrations out of the box because GRC doesn&#8217;t exist in isolation. Multiple language support for organizations that operate globally. And the most granular role-based access control I&#8217;ve encountered in any GRC tool&#8212;because &#8220;admin or viewer&#8221; isn&#8217;t a real permission model.</p><p></p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8a2f9adf-ba72-404f-a307-7d2b871a9a76_1764x1850.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c49d9f4-fafd-43ca-84fa-e418abf0ac7c_1764x1850.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/249f8c70-1bc1-4825-a01f-84fa98255710_1764x1850.jpeg&quot;}],&quot;caption&quot;:&quot;208+ integrations. Zero add-on fees.&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6894de79-79f8-48aa-a180-803e73bab088_1456x474.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p>The architecture runs on NestJS microservices behind a Traefik gateway, with PostgreSQL for persistence, Redis for caching, Keycloak for authentication, and MinIO for S3-compatible evidence storage. Everything containerized. Everything designed to be self-hosted in customer infrastructure rather than locked into a vendor&#8217;s cloud.</p><p>For deployment, I built three paths: Terraform modules for AWS with proper VPC isolation, auto-scaling ECS services, encrypted RDS, and all the enterprise-grade infrastructure you&#8217;d expect&#8212;deployable in under 30 minutes. A production-hardened Docker Compose setup for teams who just need a single server running in 10 minutes. And a Supabase/Vercel configuration for teams who want managed infrastructure without the AWS complexity. Automated backup scripts, disaster recovery procedures, the works.</p><p>The total? Seven microservices&#8212;for now. Over 7,000 lines of infrastructure-as-code. Complete API documentation. Production-ready from day one.</p><p>Also light mode. Because some of us work near windows.</p><p>Could I have spent that time fighting with vendor support tickets and waiting for roadmap features? Sure. But I&#8217;d still be waiting.</p><p>Best part? If you don&#8217;t like it, you can change it. Any part of it. Why? Because there is no one size fits all and I believe that if you pay for something you should be able to do with it what you need. But I thought you said it was free. It is, but if you find create a high quality microservice that may benefit the community I just ask that you toss in a pull request to benefit the community.</p><h3>Lessons Learned</h3><p><strong>Microservices aren&#8217;t overkill for GRC.</strong> The conventional wisdom says start monolithic, split later. But GRC domains are naturally bounded&#8212;controls, risks, vendors, audits&#8212;and keeping them separate from the start meant I could iterate on one module without touching the others. When I rebuilt the audit service to add the external portal, nothing else changed.</p><p><strong>Vibe coding is a force multiplier, not a replacement.</strong> AI pair programming got me through the boilerplate faster than I ever could alone. But it couldn&#8217;t make architectural decisions or understand why a GRC practitioner needs the risk register to work a certain way. The domain expertise had to come from me. The velocity came from the collaboration.</p><p><strong>Self-hosted is a feature, not a limitation.</strong> Every enterprise customer I&#8217;ve talked to has asked the same question: where does my data live? Building for self-hosted deployment from day one&#8212;with proper Terraform modules and production Docker Compose&#8212;means the answer is always &#8220;wherever you want it.&#8221;</p><p><strong>Infrastructure-as-code eliminates support nightmares.</strong> When deployment is a <code>terraform apply</code> or <code>docker compose up</code>, there&#8217;s no ambiguity about configuration. The Terraform outputs tell you exactly what got created. The environment templates document every variable. Customers can deploy consistently without a professional services engagement.</p><h3>The Tradeoffs</h3><p>Building a platform is not the same as building automation scripts. This took real time&#8212;nights, weekends, the kind of effort that only makes sense if you&#8217;re genuinely fed up with the alternatives.</p><p>Maintenance is on me. When Keycloak releases a new version or PostgreSQL has a security patch, I&#8217;m the one updating the Docker images. There&#8217;s no vendor handling that. The same independence that freed me from vendor roadmaps means I own the roadmap.</p><p>And there&#8217;s no ecosystem. Commercial platforms have marketplace integrations, pre-built connectors, vendor partnerships. I have APIs and the willingness to write code. For some organizations, that&#8217;s a dealbreaker. For others, it&#8217;s the point.</p><p>But here&#8217;s the thing&#8212;it doesn&#8217;t have to be just me. The GRC Engineering community exists precisely because practitioners are tired of waiting for vendors to solve problems we understand better than they do. The innovation, the maintenance, the evolution of tools like this should come from us. Not from product managers optimizing for enterprise ARR. When a practitioner builds a better integration or identifies a gap, that knowledge can flow back to everyone building in this space. That&#8217;s the model. Vendors give you a support ticket queue. A community gives you collaborators.</p><h3>Is This Path Right for You?</h3><p>Not everyone needs to build a full platform. If your pain is evidence collection, start there&#8212;a few API scripts can transform audit prep from weeks to hours. If your pain is workflow rigidity, sometimes JIRA or Notion can do what your GRC tool can&#8217;t.</p><p>But if you&#8217;re staring at a vendor platform that charges extra for APIs, gates basic reporting behind enterprise tiers, and treats every feature request as a professional services opportunity&#8212;maybe it&#8217;s time to stop asking for permission.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!p-sm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F981305cc-fd18-47e1-8bb7-49a199b3c2ee_4230x2988.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p-sm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F981305cc-fd18-47e1-8bb7-49a199b3c2ee_4230x2988.png 424w, https://substackcdn.com/image/fetch/$s_!p-sm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F981305cc-fd18-47e1-8bb7-49a199b3c2ee_4230x2988.png 848w, https://substackcdn.com/image/fetch/$s_!p-sm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F981305cc-fd18-47e1-8bb7-49a199b3c2ee_4230x2988.png 1272w, https://substackcdn.com/image/fetch/$s_!p-sm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F981305cc-fd18-47e1-8bb7-49a199b3c2ee_4230x2988.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p-sm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F981305cc-fd18-47e1-8bb7-49a199b3c2ee_4230x2988.png" width="1456" height="1028" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/981305cc-fd18-47e1-8bb7-49a199b3c2ee_4230x2988.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1028,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2038040,&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://blog.grc.engineering/i/181056450?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F981305cc-fd18-47e1-8bb7-49a199b3c2ee_4230x2988.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_!p-sm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F981305cc-fd18-47e1-8bb7-49a199b3c2ee_4230x2988.png 424w, https://substackcdn.com/image/fetch/$s_!p-sm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F981305cc-fd18-47e1-8bb7-49a199b3c2ee_4230x2988.png 848w, https://substackcdn.com/image/fetch/$s_!p-sm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F981305cc-fd18-47e1-8bb7-49a199b3c2ee_4230x2988.png 1272w, https://substackcdn.com/image/fetch/$s_!p-sm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F981305cc-fd18-47e1-8bb7-49a199b3c2ee_4230x2988.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><figcaption class="image-caption">This is what happens when you stop submitting feature requests and start writing code.</figcaption></figure></div><p>The GRC Engineering community has a <a href="https://discord.gg/CG6EDDbG4B">Discord</a> and <a href="https://github.com/grcengineering">GitHub presence</a> worth exploring. You&#8217;ll find practitioners sharing their own tools, comparing approaches, and demonstrating that the vendor monopoly on GRC tooling is entirely optional.</p><p>The compliance industry has spent years convincing us that GRC requires expensive, specialized platforms. It doesn&#8217;t. It requires clear thinking about risk, evidence of controls, and the discipline to maintain them. How you implement that is up to you.</p><div><hr></div><p><em>The author is a GRC Engineering Manager who got tired of waiting for vendor roadmaps.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.grc.engineering/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 GRC Engineering Community Blog! 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>]]></content:encoded></item><item><title><![CDATA[SOC 2 is dead, long live SOC 2!]]></title><description><![CDATA[With a healthy dose of in-depth continuous assurance]]></description><link>https://blog.grc.engineering/p/soc-2-is-dead-long-live-soc-2</link><guid isPermaLink="false">https://blog.grc.engineering/p/soc-2-is-dead-long-live-soc-2</guid><dc:creator><![CDATA[Justin Pagano]]></dc:creator><pubDate>Wed, 17 Sep 2025 15:28:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!PKBS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea548ce1-9714-49af-b6bb-7a7053bb16ef_744x986.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><em><strong>In-depth continuous assurance</strong> over shallow periodic monitoring</em></p></blockquote><p>This is <a href="https://grc.engineering/#:~:text=In%2Ddepth%20continuous%20assurance%20over%20shallow%20periodic%20monitoring">core value #5 in the GRC Engineering Manifesto</a>. I've been thinking about it a lot lately, especially given all of the dunking on SOC 2 that has happened over the last year, such as all the problems with "<a href="https://www.linkedin.com/posts/ayoubfandi_if-your-customers-still-send-questionnaires-activity-7304842724686348288-ezes/?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAAAOWtFgB7KuqZ_QqyOQLCH_UnEtv4HD7Z2k">compliance commoditization</a>" and "<a href="https://www.linkedin.com/search/results/content/?keywords=%22SOC-in-a-box%22&amp;origin=FACETED_SEARCH&amp;sid=ep)&amp;sortBy=%22date_posted%22">SOC-in-a-box</a>" and<a href="https://www.anecdotes.ai/post/original-soc-2-sin"> who is to blame</a> for it all (Compliance Automation vendors? the AICPA? audit firms? third-party risk management teams? all of the above?!)</p><p>There&#8217;s a growing chorus of folks in our industry who claim that SOC 2, and the AICPA&#8217;s stewardship of it, is thoroughly busted. On the other hand, auditors and CPAs claim that low quality or incompetent auditors are the problem and SOC 2 itself is fundamentally sound.</p><p>In my mind, there are valid points on either side of this debate.</p><p>But I also think there are deeper issues with SOC 2 (and other security compliance frameworks) that haven't been discussed as much, let alone what it looks like for those issues to be resolved.</p><p>In this post, I&#8217;m going to lay out what I believe these deeper issues are, paired with a vision for what a better approach could look like for security compliance frameworks to finally provide <em>in-depth continuous assurance </em>about an organization&#8217;s security controls.</p><h1>The problem with SOC 2? It SOCs 2 much!</h1><p>My first premise on this topic is this: <strong>there has never been a time when SOC 2 - or really any industry standard &#8220;security compliance audit&#8221; - was ever good enough, in any way, shape, or form at providing sufficient assurance about an organization&#8217;s security controls.</strong></p><p>The fundamental issues with SOC 2&#8217;s assurance value predate &#8220;SOC-in-a-box&#8221; automation products. These issues have been present throughout SOC 2&#8217;s history: from SAS 70 being used before the cloud was The Cloud<sup>TM</sup> (RIP <a href="https://en.wikipedia.org/wiki/Application_service_provider">ASPs</a>); to SSAE 16 establishing SOC as the successor to SAS 70; to SSAE 18 replacing SSAE 16; and all the way up to the <a href="https://assets.ctfassets.net/rb9cdnjh59cm/5jT1narHNQNzt4JGlkd1gr/248661d08e42531329d147782a6f8854/Trust-services-criteria.pdf">2022 &#8220;Revised Points of Focus&#8221; update to the 2017 Trust Services Criteria</a>. SOC-in-a box compliance commoditization has merely made it easier to see the deep flaws not just with security compliance frameworks of all kinds.</p><h1>The deeper issues with security compliance frameworks and audits</h1><p>Every security compliance framework shares the same fundamental ingredients:</p><ol><li><p>A set of <strong>requirements</strong> or <strong>objectives </strong>that controls must achieve</p></li><li><p>An <strong>audit methodology</strong> for determining how well controls meet said requirements</p></li><li><p>A <strong>reporting artifact</strong> to convey the results of an audit to stakeholders</p></li></ol><p>How these ingredients are implemented vary from framework to framework. But aside from maybe one framework, they all do a poor job at putting these ingredients together in ways that provide in-depth continuous assurance.</p><p>Let's unpack the common flaws with each of these one by one.</p><h2>Control requirements: vague solutions for unclear problems</h2><p>The biggest issue with how <strong>control requirements </strong>are implemented is that they are defined without any explicit association or relevance to the <em>threats</em> they are intended to guard against (with the exception of HITRUST - but even it suffers from deeper issues with the other two ingredients I described above).</p><p>In the case of SOC 2, control requirements in the form of Trust Services Criteria (TSC) and Additional Points of Focus (PoFs) are so vague that they are virtually useless for ensuring organizations consistently design controls that are proven to be effective at protecting against <em>relevant threats</em>.</p><p>Let&#8217;s use SOC 2&#8217;s Common Criteria (CC) 6.6 as an example:</p><ul><li><p>CC 6.6 TSC: &#8220;<em>The entity implements logical access security measures to protect against threats from sources outside its system boundaries</em>&#8221;</p></li><li><p>CC 6.6 PoF: &#8220;<em>Identification and authentication credentials are protected during transmission outside its system boundaries</em>&#8221;</p></li></ul><p>Imagine for a moment if this same kind of requirements framework were used for, let&#8217;s say, car safety. In such a bizarro world of vague, loose, and totally optional car safety requirements (which <a href="https://en.wikipedia.org/wiki/Automotive_safety#History">basically existed for ~100 years</a>), it would be like having a TSC stating &#8220;<em>the car implements physical restraint measures to protect passengers against threats from abrupt deceleration events</em>&#8221; and a PoF stating &#8220;<em>passengers are protected during high speed movements on roadways.</em>&#8221;</p><p>This clearly would be a virtually useless way to not only provide sufficient assurance about the safety of any given car, but to ensure that all cars are equipped with universally-applicable safety measures that protect against common threats that all passengers face.</p><p>This has certainly been the case for SOC 2 and other security compliance frameworks. They need to evolve their underlying controls requirements model to be focused on <strong>specific </strong>requirements that are known to be<strong> effective at protecting against common threats.</strong></p><h2><strong>Audit methodologies: 20th century approaches applied to 21st century systems</strong></h2><p>This is the area that SOC 2 and other security compliance audits get criticized about the most: point-in-time screenshots, hours upon hours of walkthrough meetings, and quarterly lookback reviews all make the audit world go &#8216;round.</p><p>While these tend to be the most frustrating and inefficient aspects of audits for those who undergo them, I find that these are not the most problematic aspects of how current audit methodologies severely limit the assurance value such audits can provide. The <strong>biggest</strong> shortcoming with our security compliance audit methodologies is that we almost never assess <em>historical</em> evidence for technical controls&#8217; operating effectiveness. This can result in huge misses about the reality of an organization&#8217;s&#8217; control operating effectiveness which is best summed up with this meme:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PKBS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea548ce1-9714-49af-b6bb-7a7053bb16ef_744x986.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PKBS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea548ce1-9714-49af-b6bb-7a7053bb16ef_744x986.png 424w, https://substackcdn.com/image/fetch/$s_!PKBS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea548ce1-9714-49af-b6bb-7a7053bb16ef_744x986.png 848w, https://substackcdn.com/image/fetch/$s_!PKBS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea548ce1-9714-49af-b6bb-7a7053bb16ef_744x986.png 1272w, https://substackcdn.com/image/fetch/$s_!PKBS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea548ce1-9714-49af-b6bb-7a7053bb16ef_744x986.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PKBS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea548ce1-9714-49af-b6bb-7a7053bb16ef_744x986.png" width="604" height="800.4623655913979" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ea548ce1-9714-49af-b6bb-7a7053bb16ef_744x986.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:986,&quot;width&quot;:744,&quot;resizeWidth&quot;:604,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PKBS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea548ce1-9714-49af-b6bb-7a7053bb16ef_744x986.png 424w, https://substackcdn.com/image/fetch/$s_!PKBS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea548ce1-9714-49af-b6bb-7a7053bb16ef_744x986.png 848w, https://substackcdn.com/image/fetch/$s_!PKBS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea548ce1-9714-49af-b6bb-7a7053bb16ef_744x986.png 1272w, https://substackcdn.com/image/fetch/$s_!PKBS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea548ce1-9714-49af-b6bb-7a7053bb16ef_744x986.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>Not only that, but auditors still primarily use evidence sampling methods (both statistical and nonstatistical) to draw conclusions about control operating effectiveness. However, there have been <a href="https://www.cpajournal.com/2016/02/13/unsolved-problems-auditing-half-century-retrospective-update/#:~:text=Jacoby%20and%20Hitzig,theory%20or%20fact%E2%80%9D">long-running concerns</a> within the accounting profession with how auditors exercise too much professional judgment, rather than more strictly sticking to rigorous statistical principles, when determining what kinds of sampling methods to use and how to apply them. This can create excessive risks with drawing inaccurate conclusions about control operating effectiveness.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SH2o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe17be639-3bc5-4cd2-9443-3e641cc41e8b_666x672.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SH2o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe17be639-3bc5-4cd2-9443-3e641cc41e8b_666x672.png 424w, https://substackcdn.com/image/fetch/$s_!SH2o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe17be639-3bc5-4cd2-9443-3e641cc41e8b_666x672.png 848w, https://substackcdn.com/image/fetch/$s_!SH2o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe17be639-3bc5-4cd2-9443-3e641cc41e8b_666x672.png 1272w, https://substackcdn.com/image/fetch/$s_!SH2o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe17be639-3bc5-4cd2-9443-3e641cc41e8b_666x672.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SH2o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe17be639-3bc5-4cd2-9443-3e641cc41e8b_666x672.png" width="466" height="470.1981981981982" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e17be639-3bc5-4cd2-9443-3e641cc41e8b_666x672.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:672,&quot;width&quot;:666,&quot;resizeWidth&quot;:466,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SH2o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe17be639-3bc5-4cd2-9443-3e641cc41e8b_666x672.png 424w, https://substackcdn.com/image/fetch/$s_!SH2o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe17be639-3bc5-4cd2-9443-3e641cc41e8b_666x672.png 848w, https://substackcdn.com/image/fetch/$s_!SH2o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe17be639-3bc5-4cd2-9443-3e641cc41e8b_666x672.png 1272w, https://substackcdn.com/image/fetch/$s_!SH2o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe17be639-3bc5-4cd2-9443-3e641cc41e8b_666x672.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><figcaption class="image-caption"><em>What comes to mind every time I read an unqualified opinion for a SOC 2 report containing multiple exceptions against small sample sizes for multiple controls</em></figcaption></figure></div><p>Now you might be thinking, &#8220;wait, my auditors <em>always </em>ask for samples of control evidence that include past dates during my audit period!&#8221; - and to that I would say: yes, you&#8217;re correct!</p><p>But this usually is only done for <strong>process</strong> controls that are inherently transactional in nature. For example: access requests, access (de)provisioning events, change requests, etc. which are operated via ticketing systems which necessarily means there is always historical evidence of a control&#8217;s operations.</p><p>However, <strong>technical</strong> controls that are inherently stateful in nature, such as at-rest data encryption, endpoint detection &amp; response (EDR) tooling, or web application firewalls (WAFs), are only assessed by auditors for their <strong>current</strong> state. It doesn&#8217;t matter how long your audit period is - it could be 1 month, 6 months, or 12 months - your technical controls&#8217; operating effectiveness is <strong>not</strong> being properly tested.</p><p>Why might this be? Well, a lot of organizations likely aren&#8217;t maintaining a historical audit trail of their technical controls&#8217; state over time, and for whatever reason most auditors don&#8217;t think to push their clients to provide such historical evidence, even as an opportunity for improvement to implement before the next audit happens.</p><p>We need to change our audit methodologies to fully cover <strong>historical </strong>control operating effectiveness during the entirety of an audit period and to analyze the<strong> full population</strong> of a control, especially for technical controls. Otherwise, we&#8217;re only providing (very weak) assurance about controls&#8217; operating effectiveness for the brief moment in time we gather evidence about their state.</p><h2><strong>Reporting artifacts: static documents for providing assurance about dynamic environments</strong></h2><p>Take a look at the results from this very unscientific <a href="https://www.linkedin.com/posts/activity-7303593161845555201-Uk1l?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAAAOWtFgB7KuqZ_QqyOQLCH_UnEtv4HD7Z2k">poll </a>I conducted on LinkedIn to gauge what our profession thinks the &#8220;use by&#8221; date for your SOC 2 Type II report should be before its assurance value expires. The results are fascinating:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pfYZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F315a720b-ca6c-4b2f-a4ad-76c340bddde7_1290x984.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pfYZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F315a720b-ca6c-4b2f-a4ad-76c340bddde7_1290x984.png 424w, https://substackcdn.com/image/fetch/$s_!pfYZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F315a720b-ca6c-4b2f-a4ad-76c340bddde7_1290x984.png 848w, https://substackcdn.com/image/fetch/$s_!pfYZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F315a720b-ca6c-4b2f-a4ad-76c340bddde7_1290x984.png 1272w, https://substackcdn.com/image/fetch/$s_!pfYZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F315a720b-ca6c-4b2f-a4ad-76c340bddde7_1290x984.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pfYZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F315a720b-ca6c-4b2f-a4ad-76c340bddde7_1290x984.png" width="520" height="396.6511627906977" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/315a720b-ca6c-4b2f-a4ad-76c340bddde7_1290x984.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:984,&quot;width&quot;:1290,&quot;resizeWidth&quot;:520,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pfYZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F315a720b-ca6c-4b2f-a4ad-76c340bddde7_1290x984.png 424w, https://substackcdn.com/image/fetch/$s_!pfYZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F315a720b-ca6c-4b2f-a4ad-76c340bddde7_1290x984.png 848w, https://substackcdn.com/image/fetch/$s_!pfYZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F315a720b-ca6c-4b2f-a4ad-76c340bddde7_1290x984.png 1272w, https://substackcdn.com/image/fetch/$s_!pfYZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F315a720b-ca6c-4b2f-a4ad-76c340bddde7_1290x984.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>It&#8217;s shocking that anyone thinks that a SOC 2 Type II report provides sufficient assurance up to 12 months after it is issued. Modern software-as-a-service organizations are making dozens, hundreds, and even thousands of changes to their systems every day. Every change poses varying risk to the operating effectiveness of the controls that exist in and around said systems: entire workloads deployed without threat detection controls in place (ouch!), new data stores deployed without at-rest encryption enabled (oops!), or a new web API released on a domain that your WAF isn&#8217;t configured to protect (oof!).</p><p>Now let&#8217;s take into account the fact that it can take <em>weeks </em>to go from the last piece of evidence being reviewed by your external auditor and your SOC 2 Type II report being finalized. Why do we treat this status quo of security compliance reporting artifacts as having <em>any</em> assurance value more than 1 week after they&#8217;ve been finalized?</p><p>We need a <strong>new kind of reporting artifact that is dynamic enough</strong> to reflect the current, and historical, operating effectiveness of an organization's controls. Static PDFs aren&#8217;t gonna cut it anymore.</p><h1><strong>A vision for security compliance audits that provide true in-depth continuous assurance</strong></h1><p>The problems with our current security compliance audit frameworks are clear: control requirements are very vague and not explicitly threat informed, audit methodologies are way too narrowly focused, and static reporting artifacts quickly become outdated views of highly dynamic control environments.</p><p>To overcome these fundamental flaws with SOC 2 and other security compliance frameworks, I&#8217;d like to propose a new framework for providing in-depth continuous assurance about an organization&#8217;s controls viability and operating effectiveness.</p><p>This framework:</p><ol><li><p>Should have specific control requirements that are explicitly related to relevant threats</p></li><li><p>Should facilitate and require comprehensive control auditing methodologies that match the scale and depth of modern organizations&#8217; control environments</p></li><li><p>Should provide a reporting artifact that is as dynamic as the control environments for which it is intended to describe the operating effectiveness</p></li></ol><p>I call this framework ALCOVE: <strong>A</strong>ssurance <strong>L</strong>evels for <strong>C</strong>ontrol <strong>O</strong>perating <strong>V</strong>iability &amp; <strong>E</strong>ffectiveness.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ICrB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7cee000-7c8c-4247-bac9-c851f5bbe1e7_2048x480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ICrB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7cee000-7c8c-4247-bac9-c851f5bbe1e7_2048x480.png 424w, https://substackcdn.com/image/fetch/$s_!ICrB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7cee000-7c8c-4247-bac9-c851f5bbe1e7_2048x480.png 848w, https://substackcdn.com/image/fetch/$s_!ICrB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7cee000-7c8c-4247-bac9-c851f5bbe1e7_2048x480.png 1272w, https://substackcdn.com/image/fetch/$s_!ICrB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7cee000-7c8c-4247-bac9-c851f5bbe1e7_2048x480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ICrB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7cee000-7c8c-4247-bac9-c851f5bbe1e7_2048x480.png" width="1456" height="341" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d7cee000-7c8c-4247-bac9-c851f5bbe1e7_2048x480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:341,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ICrB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7cee000-7c8c-4247-bac9-c851f5bbe1e7_2048x480.png 424w, https://substackcdn.com/image/fetch/$s_!ICrB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7cee000-7c8c-4247-bac9-c851f5bbe1e7_2048x480.png 848w, https://substackcdn.com/image/fetch/$s_!ICrB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7cee000-7c8c-4247-bac9-c851f5bbe1e7_2048x480.png 1272w, https://substackcdn.com/image/fetch/$s_!ICrB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7cee000-7c8c-4247-bac9-c851f5bbe1e7_2048x480.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Rather than totally reinventing the wheel, I believe we should draw inspiration from wheels that have already been invented from similar disciplines within security and software engineering. There already exists a scalable and robust security assurance framework that is being adopted by software providers, large and small, across various industries: Supply-chain Levels for Software Artifacts, or <a href="https://slsa.dev/">SLSA </a>("salsa") for short, which is a software supply chain security assurance framework.</p><p>Similar to SLSA, ALCOVE has various <strong>levels</strong> of assurance that an organization can strive to provide, allowing for flexibility for organizations and their stakeholders alike to provide and require establishing certain levels of assurance based on their specific needs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!J81k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe7cf782-7390-403f-ae6b-7fa8050a63b6_2048x979.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!J81k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe7cf782-7390-403f-ae6b-7fa8050a63b6_2048x979.png 424w, https://substackcdn.com/image/fetch/$s_!J81k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe7cf782-7390-403f-ae6b-7fa8050a63b6_2048x979.png 848w, https://substackcdn.com/image/fetch/$s_!J81k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe7cf782-7390-403f-ae6b-7fa8050a63b6_2048x979.png 1272w, https://substackcdn.com/image/fetch/$s_!J81k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe7cf782-7390-403f-ae6b-7fa8050a63b6_2048x979.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!J81k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe7cf782-7390-403f-ae6b-7fa8050a63b6_2048x979.png" width="1456" height="696" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fe7cf782-7390-403f-ae6b-7fa8050a63b6_2048x979.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:696,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!J81k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe7cf782-7390-403f-ae6b-7fa8050a63b6_2048x979.png 424w, https://substackcdn.com/image/fetch/$s_!J81k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe7cf782-7390-403f-ae6b-7fa8050a63b6_2048x979.png 848w, https://substackcdn.com/image/fetch/$s_!J81k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe7cf782-7390-403f-ae6b-7fa8050a63b6_2048x979.png 1272w, https://substackcdn.com/image/fetch/$s_!J81k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe7cf782-7390-403f-ae6b-7fa8050a63b6_2048x979.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>Here&#8217;s what it could look like to integrate ALCOVE with SOC 2:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2tgM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9567b60-fb06-4484-9b37-7662dd83c206_2048x932.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2tgM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9567b60-fb06-4484-9b37-7662dd83c206_2048x932.png 424w, https://substackcdn.com/image/fetch/$s_!2tgM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9567b60-fb06-4484-9b37-7662dd83c206_2048x932.png 848w, https://substackcdn.com/image/fetch/$s_!2tgM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9567b60-fb06-4484-9b37-7662dd83c206_2048x932.png 1272w, https://substackcdn.com/image/fetch/$s_!2tgM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9567b60-fb06-4484-9b37-7662dd83c206_2048x932.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2tgM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9567b60-fb06-4484-9b37-7662dd83c206_2048x932.png" width="1456" height="663" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c9567b60-fb06-4484-9b37-7662dd83c206_2048x932.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:663,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2tgM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9567b60-fb06-4484-9b37-7662dd83c206_2048x932.png 424w, https://substackcdn.com/image/fetch/$s_!2tgM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9567b60-fb06-4484-9b37-7662dd83c206_2048x932.png 848w, https://substackcdn.com/image/fetch/$s_!2tgM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9567b60-fb06-4484-9b37-7662dd83c206_2048x932.png 1272w, https://substackcdn.com/image/fetch/$s_!2tgM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9567b60-fb06-4484-9b37-7662dd83c206_2048x932.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>SOC 2 Type I and Type II reports would still exist in this world and still provide (limited) value for organizations and their stakeholders. However, we can extend SOC 2 report types to Type III and Type IV so SOC 2 can provide higher levels of assurance in line with ALCOVE Level 3 and Level 4.</p><p>In order for this to truly overcome the three fundamental flaws I outlined above, we need to also evolve our control requirements and reporting artifacts.</p><p>In the world of ALCOVE, SOC 2&#8217;s TSCs would be more rigorous, incorporating Common Threat Criteria and Common Mitigation Criteria to ensure organizations are implementing relevant controls that are well known to protect against relevant threats <em>so that sufficient assurance can be clearly and unambiguously provided about control operating effectiveness. </em>Here&#8217;s an example of what that could look like - the text in black below is existing text from SOC 2&#8217;s TSC language, and the text in red are the additional ALCOVE-related control requirements:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TmQc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a5193e-db83-4354-b4e2-3242785bff13_2048x1136.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TmQc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a5193e-db83-4354-b4e2-3242785bff13_2048x1136.png 424w, https://substackcdn.com/image/fetch/$s_!TmQc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a5193e-db83-4354-b4e2-3242785bff13_2048x1136.png 848w, https://substackcdn.com/image/fetch/$s_!TmQc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a5193e-db83-4354-b4e2-3242785bff13_2048x1136.png 1272w, https://substackcdn.com/image/fetch/$s_!TmQc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a5193e-db83-4354-b4e2-3242785bff13_2048x1136.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TmQc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a5193e-db83-4354-b4e2-3242785bff13_2048x1136.png" width="1456" height="808" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c8a5193e-db83-4354-b4e2-3242785bff13_2048x1136.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:808,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TmQc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a5193e-db83-4354-b4e2-3242785bff13_2048x1136.png 424w, https://substackcdn.com/image/fetch/$s_!TmQc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a5193e-db83-4354-b4e2-3242785bff13_2048x1136.png 848w, https://substackcdn.com/image/fetch/$s_!TmQc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a5193e-db83-4354-b4e2-3242785bff13_2048x1136.png 1272w, https://substackcdn.com/image/fetch/$s_!TmQc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a5193e-db83-4354-b4e2-3242785bff13_2048x1136.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>Finally, we need to revamp our security compliance reporting artifacts so they&#8217;re as dynamic as the control environments we&#8217;re trying to provide in-depth continuous assurance around. In addition to providing an audit report, with rich context about an organization&#8217;s system, architecture, controls, and an auditor&#8217;s opinion about control operating effectiveness, we also need control operating effectiveness metrics that capture current and historical operating effectiveness. Much in the same way that <a href="https://www.atlassian.com/software/statuspage">StatusPage </a>created a new paradigm for providing transparency around an organization&#8217;s system uptime and availability, an ALCOVE-specific reporting artifact would look something like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!b1oN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48069d6a-6207-480f-85bd-f77514e1398a_2048x930.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b1oN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48069d6a-6207-480f-85bd-f77514e1398a_2048x930.png 424w, https://substackcdn.com/image/fetch/$s_!b1oN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48069d6a-6207-480f-85bd-f77514e1398a_2048x930.png 848w, https://substackcdn.com/image/fetch/$s_!b1oN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48069d6a-6207-480f-85bd-f77514e1398a_2048x930.png 1272w, https://substackcdn.com/image/fetch/$s_!b1oN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48069d6a-6207-480f-85bd-f77514e1398a_2048x930.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!b1oN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48069d6a-6207-480f-85bd-f77514e1398a_2048x930.png" width="1456" height="661" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/48069d6a-6207-480f-85bd-f77514e1398a_2048x930.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:661,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!b1oN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48069d6a-6207-480f-85bd-f77514e1398a_2048x930.png 424w, https://substackcdn.com/image/fetch/$s_!b1oN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48069d6a-6207-480f-85bd-f77514e1398a_2048x930.png 848w, https://substackcdn.com/image/fetch/$s_!b1oN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48069d6a-6207-480f-85bd-f77514e1398a_2048x930.png 1272w, https://substackcdn.com/image/fetch/$s_!b1oN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48069d6a-6207-480f-85bd-f77514e1398a_2048x930.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>While existing Trust Center products on the market today provide Key Control Indicator (KCI) metrics about an organization&#8217;s controls, they are, quite frankly, junk. They only tell you what the &#8220;current state&#8221; of an organization&#8217;s controls are like. And in some cases, certain Trust Center products will <strong>hide/remove</strong> a control (and its corresponding green checkmark) when the control is in a <strong>failing state</strong>. This is pure unadulterated security assurance theater. In order for real-time control operating effectiveness dashboards to truly provide in-depth continuous assurance, they must provide an honest representation of an organization&#8217;s controls, both current and historical states.</p><p>As excited as I am about how a framework like ALCOVE could help provide stronger assurance about control operating effectiveness, there is a big obstacle to adopting a more rigorous approach like it: <strong>incentives</strong>.</p><h1><strong>Overcoming the obstacle of misaligned incentives</strong></h1><p>Right now, incentives around security compliance audits are skewed in the wrong direction: many organizations, especially smaller and newer companies, are incentivized to pursue cheaper and weaker audits that don&#8217;t sufficiently scrutinize their controls. This distorts market signals about organizations&#8217; risk profiles, especially when third-party due diligence teams rely on basic compliance requirements to &#8220;allow&#8221; vendors into their environment (&#8220;Do you have a SOC 2 Type II without a qualified opinion or any exceptions? Ok, great, now answer these 500 other questions about your security practices - be honest! If your answers look good enough, you&#8217;ll win our $200k ARR contract.&#8221; Let&#8217;s not kid ourselves: these incentives are so horribly misaligned.)</p><p>Additionally, third party security risk management teams aren&#8217;t usually empowered to make risk-taking decisions for other stakeholders at their organization, who are looking to use a vendor solution due to the outsized value they stand to gain from doing so. Third party security risk assessments are typically highly inefficient and take too much time to get to a decision about whether or not to proceed with a vendor given their risk profile. Teams that take weeks to assess a vendor that they would then want to say &#8220;no&#8221; to because of weak security controls will get bulldozed over by leaders at their organization. In so doing, they will burn through political capital, undermining trust in their team and function across their organization which can create feelings of job insecurity. In other words: third party security risk management teams have neither the leverage nor incentive to say &#8220;no&#8221; to a vendor that provides weak assurance about their security controls.</p><p>One way we could course correct incentives in this dynamic? By better integrating cyber insurance into the mix!</p><p>Here&#8217;s what the current state of our &#8220;security assurance &amp; insurance&#8221; dynamic looks like in the world:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yiSW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a4d6f50-0873-472e-8876-c12234f1d0c6_2048x1036.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yiSW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a4d6f50-0873-472e-8876-c12234f1d0c6_2048x1036.png 424w, https://substackcdn.com/image/fetch/$s_!yiSW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a4d6f50-0873-472e-8876-c12234f1d0c6_2048x1036.png 848w, https://substackcdn.com/image/fetch/$s_!yiSW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a4d6f50-0873-472e-8876-c12234f1d0c6_2048x1036.png 1272w, https://substackcdn.com/image/fetch/$s_!yiSW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a4d6f50-0873-472e-8876-c12234f1d0c6_2048x1036.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yiSW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a4d6f50-0873-472e-8876-c12234f1d0c6_2048x1036.png" width="1456" height="737" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a4d6f50-0873-472e-8876-c12234f1d0c6_2048x1036.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:737,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yiSW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a4d6f50-0873-472e-8876-c12234f1d0c6_2048x1036.png 424w, https://substackcdn.com/image/fetch/$s_!yiSW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a4d6f50-0873-472e-8876-c12234f1d0c6_2048x1036.png 848w, https://substackcdn.com/image/fetch/$s_!yiSW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a4d6f50-0873-472e-8876-c12234f1d0c6_2048x1036.png 1272w, https://substackcdn.com/image/fetch/$s_!yiSW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a4d6f50-0873-472e-8876-c12234f1d0c6_2048x1036.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>The incentives that exist in this dynamic are as follows:</p><ul><li><p><strong>Auditors</strong> want to grow their customer base and make more money, meaning they want to avoid upsetting their customers with lengthy cumbersome audits that could result in them getting a &#8220;failing grade.&#8221;</p></li><li><p><strong>Customers </strong>are of two minds: the <em>actual</em> customer team for a vendor&#8217;s solution wants to get their hands on said solution ASAP. Third-party risk management teams are encumbered by contradictory fears: the fear of approving an overly-risky vendor (which if said vendor experiences a security incident, third-party risk management teams fear <em>they</em> will be held accountable for making a bad risk decision); and the fear of saying &#8220;no&#8221; resulting in backlash from the customer team.</p></li><li><p><strong>Vendors </strong>want fast, easy, and cheap audits so they can win more business and keep their sales cycle running efficiently.</p></li><li><p><strong>Insurance providers </strong>want to grow their customer base and make more money while reducing uncertainty about the risk pool they&#8217;re managing, such that they reduce the likelihood and size of claim payouts.</p></li></ul><p>At the end of the day, all players are motivated by two fundamental incentives: <strong>spend less resources to get more value.</strong></p><p>So what would a better model look like where incentives are better aligned in a way that actually could drive improved controls across organizations through stronger assurance signals being provided by vendors to other stakeholders?</p><p>I am going to draw inspiration for this idea from two sources: the <a href="https://aiuc.com/">Artificial Intelligence Underwriting Company</a>, which is pioneering a novel AI Assurance + Insurance framework called <a href="https://aiuc-1.com/">AIUC-1</a> (which, you may notice, is very ALCOVE-esque); and <a href="https://www.progressive.com/auto/discounts/snapshot/">Progressive Insurance&#8217;s Snapshot</a> offering, which allows drivers to get discounts on their car insurance while allowing Progressive to reduce uncertainty about their risk pool via automated continuous monitoring of driving behavior.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!A6-S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82be348-57ed-4fd6-b5a5-725f6af12c06_2048x1084.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!A6-S!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82be348-57ed-4fd6-b5a5-725f6af12c06_2048x1084.png 424w, https://substackcdn.com/image/fetch/$s_!A6-S!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82be348-57ed-4fd6-b5a5-725f6af12c06_2048x1084.png 848w, https://substackcdn.com/image/fetch/$s_!A6-S!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82be348-57ed-4fd6-b5a5-725f6af12c06_2048x1084.png 1272w, https://substackcdn.com/image/fetch/$s_!A6-S!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82be348-57ed-4fd6-b5a5-725f6af12c06_2048x1084.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!A6-S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82be348-57ed-4fd6-b5a5-725f6af12c06_2048x1084.png" width="1456" height="771" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a82be348-57ed-4fd6-b5a5-725f6af12c06_2048x1084.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:771,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!A6-S!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82be348-57ed-4fd6-b5a5-725f6af12c06_2048x1084.png 424w, https://substackcdn.com/image/fetch/$s_!A6-S!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82be348-57ed-4fd6-b5a5-725f6af12c06_2048x1084.png 848w, https://substackcdn.com/image/fetch/$s_!A6-S!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82be348-57ed-4fd6-b5a5-725f6af12c06_2048x1084.png 1272w, https://substackcdn.com/image/fetch/$s_!A6-S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82be348-57ed-4fd6-b5a5-725f6af12c06_2048x1084.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>Now the incentives change, driven largely by insurance providers who have the most leverage of any other stakeholder in this picture. All organizations currently have a strong incentive to transfer cyber risk to insurance providers in order to avoid experiencing catastrophic losses (for example, through extensive outages and system disruptions caused by ransomware).</p><p><strong>Insurance providers</strong> have a great opportunity to push vendors to automatically and continuously feed them evidence about their controls, instead of gathering context via questionnaires once per year.</p><p><strong>Vendors</strong> stand to save money on their cyber insurance premiums with the same, or potentially better, coverage, which of course requires them to ensure their controls are continuously operating effectively!</p><p><strong>Auditors</strong> stand to have an easier time performing faster, more efficient <strong>and </strong>more rigorous audits.</p><p><strong>Customers</strong> stand to gain stronger assurance, at the time they perform due diligence <strong>and</strong> continuously thereafter.</p><p>Did I just solve all of the world&#8217;s cybersecurity problems???</p><p>(I kid, I kid)</p><h1><strong>In conclusion</strong></h1><p>All of this is very much wishful thinking on my end. But we as a civilization have achieved crazier things in less opportune circumstances (see: sending humans to the Moon and back in a fancy metal pressurized can using 1960s-era technology).</p><p>What do you think of this? What seems like it would work or not work about these ideas? What would make it more viable?</p>]]></content:encoded></item><item><title><![CDATA[Coming soon]]></title><description><![CDATA[This is GRC Engineering Community Blog.]]></description><link>https://blog.grc.engineering/p/coming-soon</link><guid isPermaLink="false">https://blog.grc.engineering/p/coming-soon</guid><dc:creator><![CDATA[Justin Pagano]]></dc:creator><pubDate>Sat, 18 May 2024 21:40:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!QUtD!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd28706-d98f-4eff-90c8-90076d0f2b6c_1280x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This is GRC Engineering Community Blog.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.grc.engineering/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.grc.engineering/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item></channel></rss>