thumbgate 1.27.11 → 1.27.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/.well-known/llms.txt +2 -1
- package/.well-known/mcp/server-card.json +1 -1
- package/README.md +2 -4
- package/adapters/claude/.mcp.json +2 -2
- package/adapters/mcp/server-stdio.js +1 -1
- package/adapters/opencode/opencode.json +1 -1
- package/adapters/policy-engine/ethicore-guardian-client.js +68 -0
- package/adapters/policy-engine/thumbgate-policy-engine-adapter.js +260 -0
- package/bin/cli.js +78 -259
- package/config/builtin-lessons.json +23 -0
- package/config/gate-templates.json +0 -228
- package/config/gates/claim-verification.json +0 -18
- package/package.json +35 -25
- package/public/assets/brand/thumbgate-logo-transparent.svg +22 -0
- package/public/assets/brand/thumbgate-mark-inline-v3.svg +19 -0
- package/public/assets/brand/thumbgate-mark.svg +11 -5
- package/public/blog.html +0 -30
- package/public/brand/thumbgate-mark.svg +9 -5
- package/public/chatgpt-app.html +2 -2
- package/public/compare.html +2 -1
- package/public/dashboard.html +1 -1
- package/public/federal.html +1 -1
- package/public/index.html +95 -216
- package/public/learn.html +59 -35
- package/public/lessons.html +1 -1
- package/public/numbers.html +2 -2
- package/public/pro.html +7 -7
- package/scripts/aws-blocks-guardrails.js +228 -0
- package/scripts/cli-schema.js +22 -10
- package/scripts/dashboard-chat.js +2 -1
- package/scripts/document-intake.js +1 -49
- package/scripts/durability/step.js +3 -3
- package/scripts/gate-stats.js +5 -11
- package/scripts/gemini-embedding-policy.js +2 -1
- package/scripts/hook-stop-anti-claim.js +116 -184
- package/scripts/hosted-config.js +0 -12
- package/scripts/llm-client.js +187 -5
- package/scripts/plausible-domain-config.js +3 -1
- package/scripts/seo-gsd.js +240 -1
- package/scripts/tool-registry.js +2 -2
- package/scripts/vector-store.js +44 -0
- package/scripts/workspace-evolver.js +62 -2
- package/src/api/server.js +340 -131
- package/public/assets/brand/thumbgate-mark-inline.svg +0 -15
- package/public/compare/adopt-ai.html +0 -219
- package/public/compare/agentix-labs.html +0 -197
- package/public/compare/ai-experience-orchestration.html +0 -216
- package/public/compare/anthropic-claude-for-legal.html +0 -260
- package/public/compare/anthropic-containment.html +0 -280
- package/public/compare/arcade.html +0 -175
- package/public/compare/arcjet.html +0 -239
- package/public/compare/bumblebee.html +0 -307
- package/public/compare/claude-code-hooks.html +0 -294
- package/public/compare/databricks-unity-ai-gateway.html +0 -215
- package/public/compare/fallow.html +0 -351
- package/public/compare/heidi.html +0 -233
- package/public/compare/mem0.html +0 -342
- package/public/compare/oak-and-sparrow-gatekeeper.html +0 -289
- package/public/compare/rein.html +0 -236
- package/public/compare/sigmashake.html +0 -256
- package/public/compare/speclock.html +0 -342
- package/public/guides/agent-harness-optimization.html +0 -342
- package/public/guides/agentic-web-governance.html +0 -406
- package/public/guides/ai-agent-governance-sprint.html +0 -415
- package/public/guides/ai-agent-pre-action-approval-gates.html +0 -401
- package/public/guides/ai-agent-workflow-migration-checklist.html +0 -392
- package/public/guides/ai-deployment-readiness.html +0 -415
- package/public/guides/ai-mode-ads-agent-governance.html +0 -401
- package/public/guides/ai-search-topical-presence.html +0 -342
- package/public/guides/autoresearch-agent-safety.html +0 -342
- package/public/guides/background-agent-governance.html +0 -358
- package/public/guides/best-tools-stop-ai-agents-breaking-production.html +0 -363
- package/public/guides/browser-automation-safety.html +0 -342
- package/public/guides/chatgpt-ads-trust.html +0 -353
- package/public/guides/claude-code-feedback.html +0 -339
- package/public/guides/claude-code-prevent-repeated-mistakes.html +0 -161
- package/public/guides/claude-code-skills-guardrails.html +0 -343
- package/public/guides/claude-desktop.html +0 -356
- package/public/guides/code-knowledge-graph-guardrails.html +0 -365
- package/public/guides/codex-cli-guardrails.html +0 -339
- package/public/guides/cursor-agent-guardrails.html +0 -339
- package/public/guides/cursor-prevent-repeated-mistakes.html +0 -161
- package/public/guides/database-agent-safety.html +0 -406
- package/public/guides/deepseek-v4-runtime-guardrails.html +0 -346
- package/public/guides/developer-machine-supply-chain-guardrails.html +0 -358
- package/public/guides/gcp-mcp-guardrails.html +0 -147
- package/public/guides/gemini-cli-feedback-memory.html +0 -339
- package/public/guides/gpt-5-5-model-evaluation.html +0 -358
- package/public/guides/internal-ai-engineering-stack-guardrails.html +0 -348
- package/public/guides/long-running-agent-context-management.html +0 -346
- package/public/guides/mcp-tool-governance.html +0 -401
- package/public/guides/multica-thumbgate-setup.html +0 -134
- package/public/guides/native-messaging-host-security.html +0 -342
- package/public/guides/policy-engine-pre-action-gates.html +0 -346
- package/public/guides/pre-action-checks.html +0 -342
- package/public/guides/pretooluse-hooks-vs-advisory-prompt-rules.html +0 -342
- package/public/guides/prompt-tricks-to-workflow-rules.html +0 -365
- package/public/guides/proxy-pointer-rag-guardrails.html +0 -352
- package/public/guides/rag-precision-tuning-guardrails.html +0 -352
- package/public/guides/reasoning-compression-guardrails.html +0 -346
- package/public/guides/relational-knowledge-ai-recommendations.html +0 -342
- package/public/guides/roo-code-alternative-cline.html +0 -339
- package/public/guides/semantic-programmatic-seo-guardrails.html +0 -352
- package/public/guides/seo-agent-skills-guardrails.html +0 -344
- package/public/guides/stop-repeated-ai-agent-mistakes.html +0 -342
- package/public/learn/ac-dc-runtime-enforcement.html +0 -277
- package/public/learn/agent-harness-pattern.html +0 -181
- package/public/learn/agent-identity-connector-governance.html +0 -146
- package/public/learn/agent-swarms-shared-gates.html +0 -173
- package/public/learn/agentic-enterprise-context-brain.html +0 -117
- package/public/learn/agentic-os-team-governance.html +0 -146
- package/public/learn/ai-agent-governance.html +0 -158
- package/public/learn/ai-agent-persistent-memory.html +0 -211
- package/public/learn/anthropomorphic-claim-gates.html +0 -180
- package/public/learn/background-agent-control-layer.html +0 -184
- package/public/learn/claude-code-goal-with-rubrics.html +0 -205
- package/public/learn/codex-role-plugins-need-governance.html +0 -125
- package/public/learn/cost-aware-agent-gate-routing.html +0 -173
- package/public/learn/databricks-unity-ai-gateway-runtime-governance.html +0 -157
- package/public/learn/deterministic-agent-workflows.html +0 -185
- package/public/learn/feedback-loop-vs-decision-layer.html +0 -283
- package/public/learn/from-prototype-to-production.html +0 -223
- package/public/learn/learn.css +0 -51
- package/public/learn/mcp-pre-action-checks-explained.html +0 -172
- package/public/learn/pretix-stripe-connect-marketplaces.html +0 -161
- package/public/learn/regulated-agent-execution-boundary.html +0 -196
- package/public/learn/spec-driven-development.html +0 -168
- package/public/learn/stop-ai-agent-force-push.html +0 -134
- package/public/learn/vibe-coding-safety-net.html +0 -142
- package/scripts/reddit-browser-notification-watch.js +0 -230
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>The $1.4M Cost of Building Agent Guardrails — Why Pre-Action Gates Are the Buy-Side Answer</title>
|
|
7
|
-
<script defer data-domain="thumbgate.ai" src="https://plausible.io/js/script.js"></script>
|
|
8
|
-
<meta name="description" content="The New Stack put a $1.4M / 18-month price tag on DIY agentic AI platforms in regulated industries. Building the orchestration is the easy part — even after you buy a platform, agents still touch prod. Here's the execution-boundary layer they didn't name.">
|
|
9
|
-
<meta name="keywords" content="agentic AI build vs buy, regulated industries AI agents, DORA AI Act compliance, agent execution boundary, pre-action gates, agent guardrails, Claude Code governance, ThumbGate, agent reliability gateway">
|
|
10
|
-
<meta property="og:title" content="The $1.4M Cost of Building Agent Guardrails — And Why Pre-Action Gates Are the Buy-Side Answer">
|
|
11
|
-
<meta property="og:description" content="Bryan Ross at GitLab argued buy-don't-build for agentic AI platforms in regulated industries. He's right — and there's one layer the article didn't name. Even after you buy the platform, agents still touch prod.">
|
|
12
|
-
<meta property="og:type" content="article">
|
|
13
|
-
<meta property="og:url" content="https://thumbgate.ai/learn/regulated-agent-execution-boundary">
|
|
14
|
-
<link rel="canonical" href="https://thumbgate.ai/learn/regulated-agent-execution-boundary">
|
|
15
|
-
|
|
16
|
-
<script type="application/ld+json">
|
|
17
|
-
{
|
|
18
|
-
"@context": "https://schema.org",
|
|
19
|
-
"@type": "TechArticle",
|
|
20
|
-
"headline": "The $1.4M Cost of Building Agent Guardrails — And Why Pre-Action Gates Are the Buy-Side Answer",
|
|
21
|
-
"description": "DIY agentic AI platforms in regulated industries carry a $1.4M / 18-month price tag. The orchestration layer is only half the buy decision — the other half is the execution boundary between the agent and prod.",
|
|
22
|
-
"author": {
|
|
23
|
-
"@type": "Person",
|
|
24
|
-
"name": "Igor Ganapolsky",
|
|
25
|
-
"url": "https://github.com/IgorGanapolsky"
|
|
26
|
-
},
|
|
27
|
-
"publisher": {
|
|
28
|
-
"@type": "Organization",
|
|
29
|
-
"name": "ThumbGate",
|
|
30
|
-
"url": "https://thumbgate.ai"
|
|
31
|
-
},
|
|
32
|
-
"datePublished": "2026-05-18",
|
|
33
|
-
"dateModified": "2026-05-18",
|
|
34
|
-
"mainEntityOfPage": "https://thumbgate.ai/learn/regulated-agent-execution-boundary",
|
|
35
|
-
"citation": {
|
|
36
|
-
"@type": "Article",
|
|
37
|
-
"headline": "The hidden cost of build vs. buy for agentic AI in regulated industries",
|
|
38
|
-
"author": "Bryan Ross",
|
|
39
|
-
"publisher": "The New Stack",
|
|
40
|
-
"url": "https://thenewstack.io/agentic-ai-build-buy/",
|
|
41
|
-
"datePublished": "2026-05-15"
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
</script>
|
|
45
|
-
|
|
46
|
-
<link rel="stylesheet" href="/learn/learn.css">
|
|
47
|
-
<style>
|
|
48
|
-
.cite-box {
|
|
49
|
-
background: var(--bg-card);
|
|
50
|
-
border-left: 3px solid var(--cyan);
|
|
51
|
-
border-radius: 6px;
|
|
52
|
-
padding: 1rem 1.25rem;
|
|
53
|
-
margin: 1.5rem 0;
|
|
54
|
-
font-size: 0.95rem;
|
|
55
|
-
color: var(--text-dim);
|
|
56
|
-
}
|
|
57
|
-
.cite-box a { color: var(--cyan); text-decoration: none; }
|
|
58
|
-
.cite-box a:hover { text-decoration: underline; }
|
|
59
|
-
.number-callout {
|
|
60
|
-
display: inline-block;
|
|
61
|
-
color: var(--cyan);
|
|
62
|
-
font-weight: 700;
|
|
63
|
-
font-size: 1.15em;
|
|
64
|
-
}
|
|
65
|
-
.compare-table {
|
|
66
|
-
width: 100%;
|
|
67
|
-
border-collapse: collapse;
|
|
68
|
-
margin: 1.5rem 0;
|
|
69
|
-
font-size: 0.95rem;
|
|
70
|
-
}
|
|
71
|
-
.compare-table th, .compare-table td {
|
|
72
|
-
padding: 12px 14px;
|
|
73
|
-
text-align: left;
|
|
74
|
-
border-bottom: 1px solid var(--border);
|
|
75
|
-
vertical-align: top;
|
|
76
|
-
}
|
|
77
|
-
.compare-table th {
|
|
78
|
-
background: var(--bg-card);
|
|
79
|
-
color: var(--text);
|
|
80
|
-
font-weight: 700;
|
|
81
|
-
}
|
|
82
|
-
.compare-table td:first-child {
|
|
83
|
-
font-weight: 600;
|
|
84
|
-
color: var(--text);
|
|
85
|
-
}
|
|
86
|
-
</style>
|
|
87
|
-
</head>
|
|
88
|
-
<body>
|
|
89
|
-
|
|
90
|
-
<nav>
|
|
91
|
-
<a href="/" class="brand"><img src="/assets/brand/thumbgate-mark-inline.svg" alt="ThumbGate" class="logo-mark" width="28" height="28"><span class="logo-text">ThumbGate</span></a>
|
|
92
|
-
<a href="/guide">Setup Guide</a>
|
|
93
|
-
<a href="/learn">Learn</a>
|
|
94
|
-
<a href="/pricing">Pricing</a>
|
|
95
|
-
<a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub</a>
|
|
96
|
-
</nav>
|
|
97
|
-
|
|
98
|
-
<div class="container">
|
|
99
|
-
<div class="breadcrumb"><a href="/learn">Learn</a> / Regulated Agent Execution Boundary</div>
|
|
100
|
-
<h1>The $1.4M Cost of Building Agent Guardrails</h1>
|
|
101
|
-
<p class="lede">GitLab's Field CTO put a price on DIY agentic AI platforms in regulated industries: <span class="number-callout">$1.4M and 18 months</span>. The article is right about the build-vs-buy frame. It's missing the layer that decides whether the platform survives its first production incident.</p>
|
|
102
|
-
|
|
103
|
-
<div class="cite-box">
|
|
104
|
-
<strong>Cited:</strong> Bryan Ross (GitLab Field CTO), <a href="https://thenewstack.io/agentic-ai-build-buy/" target="_blank" rel="noopener">"The hidden cost of build vs. buy for agentic AI in regulated industries"</a>, The New Stack, May 15, 2026. We agree with the thesis. This post extends it.
|
|
105
|
-
</div>
|
|
106
|
-
|
|
107
|
-
<h2>What the article gets right</h2>
|
|
108
|
-
|
|
109
|
-
<p>The frame is correct. In banking, insurance, and any DORA / EU AI Act surface area, internally-built agentic AI platforms compound regulatory obligation faster than they compound capability. The article identifies the real cost drivers honestly: agentic-framework management, prompt-injection defenses, sandboxing, SIEM and DLP integration, red-team testing, and ongoing documentation under DORA and the EU AI Act. Each is an ongoing obligation, not a one-time install.</p>
|
|
110
|
-
|
|
111
|
-
<p>The article also names the right architectural insight: <em>the model isn't where the complexity lives</em>. The orchestration sitting in front of it is. Picking which tool the agent invokes, in what sequence, with what guardrails, with what accountability trail — that's the actual platform problem.</p>
|
|
112
|
-
|
|
113
|
-
<h2>The layer the article didn't name</h2>
|
|
114
|
-
|
|
115
|
-
<p>Here's the gap. The article frames the buy decision as <em>platform vs. no platform</em>. But even after you buy GitLab's agentic platform, or Claude Code's, or Cursor's, or any vendor's — the agent still issues tool calls against your real systems. Real git pushes. Real production database connections. Real Stripe API keys. Real file deletions.</p>
|
|
116
|
-
|
|
117
|
-
<p>The orchestration layer the article describes decides <em>which tool</em>. The layer underneath decides whether that tool call actually executes.</p>
|
|
118
|
-
|
|
119
|
-
<p>That layer has a name: the <strong>pre-action gate</strong>. Or, as the broader industry is starting to call it, the <strong>agent execution boundary</strong>. It sits between the agent's tool-call intent and the irreversible operation, evaluates the call against learned policy, and blocks the ones a human reviewer has already said "no" to in past sessions.</p>
|
|
120
|
-
|
|
121
|
-
<h2>Why this matters specifically for regulated buyers</h2>
|
|
122
|
-
|
|
123
|
-
<p>Under DORA Article 6 and the EU AI Act's high-risk provider obligations, "an agent did the wrong thing" is not a defense. The regulated entity remains accountable for every action attributable to a system it deployed. That means the audit question is never <em>did your agent platform have good intentions</em>; it's <em>can you produce the exact sequence of policy evaluations that allowed or blocked each privileged action, with timestamps</em>.</p>
|
|
124
|
-
|
|
125
|
-
<p>An orchestration platform without an execution boundary can tell you what the agent <em>tried to do</em>. An execution boundary tells you what it was actually <em>permitted</em> to do, and which learned rule made that decision. Only the second one satisfies an auditor.</p>
|
|
126
|
-
|
|
127
|
-
<h2>Build-vs-buy applies recursively</h2>
|
|
128
|
-
|
|
129
|
-
<p>The article's three questions — Is the requirement truly unique? How much regulatory surface area can the organization realistically own? What's the time horizon? — apply just as well to the execution-boundary layer as to the orchestration layer above it.</p>
|
|
130
|
-
|
|
131
|
-
<table class="compare-table">
|
|
132
|
-
<thead>
|
|
133
|
-
<tr>
|
|
134
|
-
<th>Layer</th>
|
|
135
|
-
<th>Build internally</th>
|
|
136
|
-
<th>Buy</th>
|
|
137
|
-
</tr>
|
|
138
|
-
</thead>
|
|
139
|
-
<tbody>
|
|
140
|
-
<tr>
|
|
141
|
-
<td>Orchestration / agentic framework</td>
|
|
142
|
-
<td>The $1.4M / 18-month estimate from the GitLab piece</td>
|
|
143
|
-
<td>GitLab Duo, Anthropic Claude Code, vendor platforms</td>
|
|
144
|
-
</tr>
|
|
145
|
-
<tr>
|
|
146
|
-
<td>Execution boundary / pre-action gate</td>
|
|
147
|
-
<td>~3–6 engineer-months to build the hook layer, plus ongoing rule maintenance and SIEM integration</td>
|
|
148
|
-
<td>ThumbGate Pro / Team / Regulated — installs in one command</td>
|
|
149
|
-
</tr>
|
|
150
|
-
<tr>
|
|
151
|
-
<td>Audit trail of decisions</td>
|
|
152
|
-
<td>Custom telemetry pipeline, immutable storage, retention policy</td>
|
|
153
|
-
<td>Included with the execution-boundary purchase if you pick one with audit export</td>
|
|
154
|
-
</tr>
|
|
155
|
-
</tbody>
|
|
156
|
-
</table>
|
|
157
|
-
|
|
158
|
-
<p>The article's argument generalizes: you don't want some teams to be agent-enabled and some not. You want every team to be agent-enabled, consistently, in a way that's governable and scalable. The execution boundary is exactly where that consistency lives at the tool-call level.</p>
|
|
159
|
-
|
|
160
|
-
<h2>What an execution boundary actually does at runtime</h2>
|
|
161
|
-
|
|
162
|
-
<p>Concretely, on a Claude Code or Cursor PreToolUse hook, a pre-action gate fires before each privileged tool call. It runs the planned call through a learned rule set — rules generated from past human feedback on past agent failures in the same codebase — and returns one of: allow, allow with confirmation, or block-with-reason.</p>
|
|
163
|
-
|
|
164
|
-
<p>This is not a memory layer. Memory layers help the agent remember <em>what you told it</em>. An execution boundary enforces <em>what you wouldn't accept</em>. The two compose; they don't substitute.</p>
|
|
165
|
-
|
|
166
|
-
<p>For the auditor, the artifact is a per-decision row: who initiated the call, what the call would have done, which rule evaluated it, what the outcome was, and which past feedback event taught that rule. That's the evidence DORA Article 28 and the EU AI Act post-market monitoring articles actually ask for.</p>
|
|
167
|
-
|
|
168
|
-
<h2>The honest constraint</h2>
|
|
169
|
-
|
|
170
|
-
<p>An execution boundary is not a hallucination filter and not a model-quality fix. It does not make a bad agent good. It makes a fast agent <em>safe to ship</em> by stopping it from re-committing mistakes it has already been corrected on in your environment.</p>
|
|
171
|
-
|
|
172
|
-
<p>That distinction is the whole product. If you're in banking, insurance, healthcare, or any other DORA / EU AI Act surface, the relevant question after reading the Ross piece isn't <em>should I buy an agent platform</em>. The answer there is already yes. The next question is <em>what's between that platform and prod</em>.</p>
|
|
173
|
-
|
|
174
|
-
<div class="cta-box">
|
|
175
|
-
<h2 style="color:var(--text);font-size:1.3rem;margin:0 0 8px;">Skip the $1.4M. Install the execution boundary.</h2>
|
|
176
|
-
<p>ThumbGate ships as a pre-action gate for every major agent surface (Claude Code, Cursor, Codex, Gemini, Amp, any MCP agent). MIT-licensed core. Audit-ready enforcement proof on Pro. DORA/EU AI Act evidence packaging on Regulated.</p>
|
|
177
|
-
<div class="cta-install">$ npx thumbgate init</div>
|
|
178
|
-
</div>
|
|
179
|
-
|
|
180
|
-
<div class="related">
|
|
181
|
-
<h3>Related guides</h3>
|
|
182
|
-
<a href="/learn/ai-agent-governance">AI Agent Governance — The Four Layers Pattern →</a>
|
|
183
|
-
<a href="/learn/mcp-pre-action-checks-explained">MCP Pre-Action Checks Explained →</a>
|
|
184
|
-
<a href="/learn/stop-ai-agent-force-push">How to Stop an AI Agent From Force-Pushing →</a>
|
|
185
|
-
<a href="/learn/agent-swarms-shared-gates">Agent Swarms and Shared Gates →</a>
|
|
186
|
-
</div>
|
|
187
|
-
</div>
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
<div class="sticky-cta">
|
|
191
|
-
<span style="color:var(--muted)">Try it now:</span>
|
|
192
|
-
<code>npx thumbgate init</code>
|
|
193
|
-
<a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub →</a>
|
|
194
|
-
</div>
|
|
195
|
-
</body>
|
|
196
|
-
</html>
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>Spec-Driven Development for AI Agents — How ThumbGate Enforces the Spec</title>
|
|
7
|
-
<script defer data-domain="thumbgate.ai" src="https://plausible.io/js/script.js"></script>
|
|
8
|
-
<meta name="description" content="Spec-driven development tells AI agents what to build via mission.md, tech-stack.md, and roadmap.md. ThumbGate enforces the spec at the gate layer so agents cannot drift outside scope.">
|
|
9
|
-
<meta name="keywords" content="spec-driven development, spec driven AI coding, mission.md, tech-stack.md, roadmap.md, AI agent spec enforcement, Claude Code spec, Cursor spec workflow, ThumbGate">
|
|
10
|
-
<meta property="og:title" content="Spec-Driven Development for AI Agents — Runtime Enforcement with ThumbGate">
|
|
11
|
-
<meta property="og:description" content="Writing the spec is half the work. The other half is making the agent stay inside it. ThumbGate gates tool calls against your spec so drift is blocked at the hook layer.">
|
|
12
|
-
<meta property="og:type" content="article">
|
|
13
|
-
<meta property="og:url" content="https://thumbgate.ai/learn/spec-driven-development">
|
|
14
|
-
<link rel="canonical" href="https://thumbgate.ai/learn/spec-driven-development">
|
|
15
|
-
|
|
16
|
-
<script type="application/ld+json">
|
|
17
|
-
{
|
|
18
|
-
"@context": "https://schema.org",
|
|
19
|
-
"@type": "TechArticle",
|
|
20
|
-
"headline": "Spec-Driven Development for AI Agents — How ThumbGate Enforces the Spec",
|
|
21
|
-
"description": "Spec-driven development gives AI coding agents a mission, tech-stack, and roadmap to follow. ThumbGate is the runtime enforcement layer that blocks tool calls that drift outside the spec.",
|
|
22
|
-
"author": {
|
|
23
|
-
"@type": "Person",
|
|
24
|
-
"name": "Igor Ganapolsky",
|
|
25
|
-
"url": "https://github.com/IgorGanapolsky"
|
|
26
|
-
},
|
|
27
|
-
"publisher": {
|
|
28
|
-
"@type": "Organization",
|
|
29
|
-
"name": "ThumbGate",
|
|
30
|
-
"url": "https://thumbgate.ai"
|
|
31
|
-
},
|
|
32
|
-
"datePublished": "2026-05-14",
|
|
33
|
-
"dateModified": "2026-05-14",
|
|
34
|
-
"mainEntityOfPage": "https://thumbgate.ai/learn/spec-driven-development"
|
|
35
|
-
}
|
|
36
|
-
</script>
|
|
37
|
-
|
|
38
|
-
<link rel="stylesheet" href="/learn/learn.css">
|
|
39
|
-
<style>
|
|
40
|
-
.spec-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; margin: 1.5rem 0; }
|
|
41
|
-
.spec-grid > div { background: var(--bg-card); border: 1px solid var(--border); border-radius: 8px; padding: 1rem; }
|
|
42
|
-
.spec-grid h4 { font-size: 0.95rem; margin-bottom: 0.5rem; color: var(--green); }
|
|
43
|
-
.spec-grid code { font-size: 0.85rem; }
|
|
44
|
-
@media (max-width: 800px) { .spec-grid { grid-template-columns: 1fr; } }
|
|
45
|
-
.layer { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 1.5rem 0; }
|
|
46
|
-
.layer > div { background: var(--bg-card); border: 1px solid var(--border); border-radius: 8px; padding: 1rem; }
|
|
47
|
-
@media (max-width: 700px) { .layer { grid-template-columns: 1fr; } }
|
|
48
|
-
</style>
|
|
49
|
-
</head>
|
|
50
|
-
<body>
|
|
51
|
-
|
|
52
|
-
<nav>
|
|
53
|
-
<a href="/" class="brand"><img src="/assets/brand/thumbgate-mark-inline.svg" alt="ThumbGate" class="logo-mark" width="28" height="28"><span class="logo-text">ThumbGate</span></a>
|
|
54
|
-
<a href="/guide">Setup Guide</a>
|
|
55
|
-
<a href="/learn">Learn</a>
|
|
56
|
-
<a href="/dashboard">Dashboard</a>
|
|
57
|
-
<a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub</a>
|
|
58
|
-
</nav>
|
|
59
|
-
|
|
60
|
-
<div class="container">
|
|
61
|
-
<div class="breadcrumb"><a href="/learn">Learn</a> / Spec-Driven Development</div>
|
|
62
|
-
<h1>Spec-Driven Development for AI Agents</h1>
|
|
63
|
-
<p style="color:var(--muted);">4 min read · For teams moving from vibe-coding to repeatable AI development</p>
|
|
64
|
-
|
|
65
|
-
<div class="tldr"><strong>TL;DR:</strong> Spec-driven development gives agents three constitution files — <code>mission.md</code>, <code>tech-stack.md</code>, <code>roadmap.md</code> — plus per-feature plan / requirements / validation docs. The spec only works if the agent cannot drift outside it. ThumbGate is the runtime enforcement layer that blocks tool calls that violate the spec, at the PreToolUse hook layer.</div>
|
|
66
|
-
|
|
67
|
-
<h2>The constitution: three files that define your project</h2>
|
|
68
|
-
<p>Spec-driven development replaces conversational LLM iteration with a small set of source-of-truth documents stored in the repo. The agent reads them, the team reads them, and they get updated together.</p>
|
|
69
|
-
|
|
70
|
-
<div class="spec-grid">
|
|
71
|
-
<div>
|
|
72
|
-
<h4>mission.md</h4>
|
|
73
|
-
<p>The <em>why</em>. What this project is, who it serves, what the non-goals are.</p>
|
|
74
|
-
</div>
|
|
75
|
-
<div>
|
|
76
|
-
<h4>tech-stack.md</h4>
|
|
77
|
-
<p>Approved technical choices, deployment process, the rails the agent must stay on.</p>
|
|
78
|
-
</div>
|
|
79
|
-
<div>
|
|
80
|
-
<h4>roadmap.md</h4>
|
|
81
|
-
<p>Phases, planned features, current priorities. Updated as work lands.</p>
|
|
82
|
-
</div>
|
|
83
|
-
</div>
|
|
84
|
-
|
|
85
|
-
<h2>Per-feature artifacts</h2>
|
|
86
|
-
<p>Each feature gets its own dated directory (<code>2026-05-14-feature-name/</code>) with three files:</p>
|
|
87
|
-
<ul>
|
|
88
|
-
<li><strong>plan.md</strong> — numbered task groups</li>
|
|
89
|
-
<li><strong>requirements.md</strong> — scope, decisions, context</li>
|
|
90
|
-
<li><strong>validation.md</strong> — how the feature is considered done</li>
|
|
91
|
-
</ul>
|
|
92
|
-
|
|
93
|
-
<h2>Where spec-driven development breaks</h2>
|
|
94
|
-
<p>The spec only matters if the agent stays inside it. In practice, the agent reads the constitution into context once, then drifts as the conversation grows. Context compaction evicts <code>tech-stack.md</code> before it evicts the last 200 lines of the chat. Long-running sessions touch files the spec never mentioned.</p>
|
|
95
|
-
|
|
96
|
-
<div class="callout callout-yellow">
|
|
97
|
-
<strong>The hard part is not writing the spec. It is enforcing it.</strong>
|
|
98
|
-
</div>
|
|
99
|
-
|
|
100
|
-
<h2>Two layers: the spec, and the gate</h2>
|
|
101
|
-
<div class="layer">
|
|
102
|
-
<div>
|
|
103
|
-
<h4>Layer 1 — The spec</h4>
|
|
104
|
-
<ul>
|
|
105
|
-
<li>Human-authored markdown files in the repo</li>
|
|
106
|
-
<li>Read by the agent at session start</li>
|
|
107
|
-
<li>Stored as the source of truth</li>
|
|
108
|
-
<li>Updated by humans during planning</li>
|
|
109
|
-
</ul>
|
|
110
|
-
</div>
|
|
111
|
-
<div>
|
|
112
|
-
<h4>Layer 2 — The gate</h4>
|
|
113
|
-
<ul>
|
|
114
|
-
<li>ThumbGate hooks intercept tool calls before execution</li>
|
|
115
|
-
<li>Each call is checked against the spec's scope</li>
|
|
116
|
-
<li>Out-of-scope writes, destructive commands, and dependency drift are blocked</li>
|
|
117
|
-
<li>The agent gets a structured error and a path back to the spec</li>
|
|
118
|
-
</ul>
|
|
119
|
-
</div>
|
|
120
|
-
</div>
|
|
121
|
-
|
|
122
|
-
<h2>What ThumbGate actually checks against the spec</h2>
|
|
123
|
-
<p>ThumbGate ingests the constitution files and uses them as the policy source for PreToolUse checks:</p>
|
|
124
|
-
<ul>
|
|
125
|
-
<li><strong>Scope drift:</strong> if <code>tech-stack.md</code> says Postgres but the agent runs <code>npm install mongoose</code>, the install is blocked</li>
|
|
126
|
-
<li><strong>Path drift:</strong> if the current feature's <code>requirements.md</code> lists <code>src/auth/*</code> as in-scope, writes to <code>src/billing/*</code> require confirmation</li>
|
|
127
|
-
<li><strong>Validation enforcement:</strong> if <code>validation.md</code> says "no merge without integration tests passing", merge tool calls are gated</li>
|
|
128
|
-
<li><strong>Phase enforcement:</strong> if <code>roadmap.md</code> marks a feature as "Phase 3" and you are in Phase 1, related code paths are protected</li>
|
|
129
|
-
</ul>
|
|
130
|
-
|
|
131
|
-
<h2>Why prompt rules alone do not work</h2>
|
|
132
|
-
<p>Spec-driven dev usually starts with <code>CLAUDE.md</code> or <code>.cursorrules</code> referencing the constitution. Those files live inside the agent's context. They compete with the live conversation for attention. When the context window pressures up, prompt rules are the first thing to lose weight.</p>
|
|
133
|
-
<p>Pre-action checks live <em>outside</em> the agent. They run in a separate process at the hook boundary. The agent cannot reason its way around a closed file handle.</p>
|
|
134
|
-
|
|
135
|
-
<div class="callout callout-green">
|
|
136
|
-
<strong>Mental model:</strong> The spec is the law. ThumbGate is the bailiff.
|
|
137
|
-
</div>
|
|
138
|
-
|
|
139
|
-
<h2>Adoption in two steps</h2>
|
|
140
|
-
<ol>
|
|
141
|
-
<li><strong>Write the constitution.</strong> Three files: <code>mission.md</code>, <code>tech-stack.md</code>, <code>roadmap.md</code>. Keep them short.</li>
|
|
142
|
-
<li><strong>Install the gate.</strong> <code>npx thumbgate init</code> — auto-detects the agent and wires the PreToolUse hooks. Point ThumbGate at the constitution path.</li>
|
|
143
|
-
</ol>
|
|
144
|
-
<p>From there, the agent reads the spec into context every session, and ThumbGate enforces it on every tool call.</p>
|
|
145
|
-
|
|
146
|
-
<div class="cta-box">
|
|
147
|
-
<h2 style="color:var(--text);font-size:1.3rem;margin:0 0 8px;">Stop hoping your agent reads the spec</h2>
|
|
148
|
-
<p>Spec-driven development is real only when the spec is enforced. Install ThumbGate and let the gate do the policing.</p>
|
|
149
|
-
<div class="cta-install">$ npx thumbgate init</div>
|
|
150
|
-
</div>
|
|
151
|
-
|
|
152
|
-
<div class="related">
|
|
153
|
-
<h3>Related guides</h3>
|
|
154
|
-
<a href="/learn/from-prototype-to-production">From Prototype to Production with AI Agents →</a>
|
|
155
|
-
<a href="/learn/vibe-coding-safety-net">The Vibe Coding Safety Net You Are Missing →</a>
|
|
156
|
-
<a href="/learn/mcp-pre-action-checks-explained">MCP Pre-Action Checks Explained →</a>
|
|
157
|
-
<a href="/pricing">ThumbGate Pricing →</a>
|
|
158
|
-
</div>
|
|
159
|
-
</div>
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
<div class="sticky-cta">
|
|
163
|
-
<span style="color:var(--muted)">Try it now:</span>
|
|
164
|
-
<code>npx thumbgate init</code>
|
|
165
|
-
<a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub →</a>
|
|
166
|
-
</div>
|
|
167
|
-
</body>
|
|
168
|
-
</html>
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>How to Stop AI Agents From Force-Pushing to Main — ThumbGate</title>
|
|
7
|
-
<script defer data-domain="thumbgate.ai" src="https://plausible.io/js/script.js"></script>
|
|
8
|
-
<meta name="description" content="Your AI coding agent just force-pushed to main. Again. Here is how to make that physically impossible with a pre-action check in two minutes.">
|
|
9
|
-
<meta name="keywords" content="AI agent force push, Claude Code force push prevention, git push force main, AI coding agent git safety, pre-action checks, ThumbGate">
|
|
10
|
-
<meta property="og:title" content="How to Stop AI Agents From Force-Pushing to Main">
|
|
11
|
-
<meta property="og:description" content="Make force-push to main physically impossible for your AI coding agent with a pre-action check.">
|
|
12
|
-
<meta property="og:type" content="article">
|
|
13
|
-
<meta property="og:url" content="https://thumbgate.ai/learn/stop-ai-agent-force-push">
|
|
14
|
-
<link rel="canonical" href="https://thumbgate.ai/learn/stop-ai-agent-force-push">
|
|
15
|
-
|
|
16
|
-
<script type="application/ld+json">
|
|
17
|
-
{
|
|
18
|
-
"@context": "https://schema.org",
|
|
19
|
-
"@type": "TechArticle",
|
|
20
|
-
"headline": "How to Stop AI Agents From Force-Pushing to Main",
|
|
21
|
-
"description": "Make force-push to main physically impossible for your AI coding agent with a pre-action check.",
|
|
22
|
-
"author": {
|
|
23
|
-
"@type": "Person",
|
|
24
|
-
"name": "Igor Ganapolsky",
|
|
25
|
-
"url": "https://github.com/IgorGanapolsky"
|
|
26
|
-
},
|
|
27
|
-
"publisher": {
|
|
28
|
-
"@type": "Organization",
|
|
29
|
-
"name": "ThumbGate",
|
|
30
|
-
"url": "https://thumbgate.ai"
|
|
31
|
-
},
|
|
32
|
-
"datePublished": "2026-04-01",
|
|
33
|
-
"dateModified": "2026-04-01",
|
|
34
|
-
"mainEntityOfPage": "https://thumbgate.ai/learn/stop-ai-agent-force-push",
|
|
35
|
-
"about": [
|
|
36
|
-
{"@type": "Thing", "name": "git force push prevention"},
|
|
37
|
-
{"@type": "Thing", "name": "AI coding agent safety"},
|
|
38
|
-
{"@type": "Thing", "name": "pre-action checks"}
|
|
39
|
-
]
|
|
40
|
-
}
|
|
41
|
-
</script>
|
|
42
|
-
|
|
43
|
-
<link rel="stylesheet" href="/learn/learn.css">
|
|
44
|
-
</head>
|
|
45
|
-
<body>
|
|
46
|
-
|
|
47
|
-
<nav>
|
|
48
|
-
<a href="/" class="brand"><img src="/assets/brand/thumbgate-mark-inline.svg" alt="ThumbGate" class="logo-mark" width="28" height="28"><span class="logo-text">ThumbGate</span></a>
|
|
49
|
-
<a href="/guide">Setup Guide</a>
|
|
50
|
-
<a href="/learn">Learn</a>
|
|
51
|
-
<a href="/dashboard">Dashboard</a>
|
|
52
|
-
<a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub</a>
|
|
53
|
-
</nav>
|
|
54
|
-
|
|
55
|
-
<div class="container">
|
|
56
|
-
<div class="breadcrumb"><a href="/learn">Learn</a> / Stop AI Agent Force-Push</div>
|
|
57
|
-
<h1>How to Stop AI Agents From Force-Pushing to Main</h1>
|
|
58
|
-
<p style="color:var(--muted);">2 min read · Works with Claude Code, Cursor, Codex, and any MCP agent</p>
|
|
59
|
-
|
|
60
|
-
<div class="tldr"><strong>TL;DR:</strong> Your AI agent will force-push to main unless you physically prevent it. One PreToolUse hook + two minutes = impossible.</div>
|
|
61
|
-
|
|
62
|
-
<h2>The problem</h2>
|
|
63
|
-
<p>You write <code>never force-push to main</code> in your CLAUDE.md. Your agent reads it. Then it force-pushes to main anyway. Prompt rules are suggestions. Agents can and do ignore them when the context window fills up or when a chain of reasoning overrides the instruction.</p>
|
|
64
|
-
|
|
65
|
-
<div class="callout callout-red">
|
|
66
|
-
<strong>Real example:</strong> A developer lost 14 commits when their Claude Code agent ran <code>git push --force origin main</code> during a rebase. The CLAUDE.md said "never force-push." The agent did it anyway.
|
|
67
|
-
</div>
|
|
68
|
-
|
|
69
|
-
<h2>Why prompt rules fail</h2>
|
|
70
|
-
<ul>
|
|
71
|
-
<li><strong>Context overflow</strong> — as the conversation grows, early instructions get compressed or dropped</li>
|
|
72
|
-
<li><strong>Reasoning override</strong> — the agent decides force-push is the "correct" solution to a merge conflict</li>
|
|
73
|
-
<li><strong>No enforcement layer</strong> — nothing physically stops the tool call from executing</li>
|
|
74
|
-
</ul>
|
|
75
|
-
|
|
76
|
-
<h2>The fix: a pre-action check</h2>
|
|
77
|
-
<p>A pre-action check intercepts the tool call <em>before</em> it executes. It pattern-matches the command against known-bad actions and blocks them. The agent cannot bypass it because the check runs outside the agent's control, at the MCP hook layer.</p>
|
|
78
|
-
|
|
79
|
-
<h3>Step 1: Install ThumbGate</h3>
|
|
80
|
-
<pre><code>npx thumbgate init</code></pre>
|
|
81
|
-
<p>This auto-detects your agent (Claude Code, Cursor, etc.) and configures the PreToolUse hook.</p>
|
|
82
|
-
|
|
83
|
-
<h3>Step 2: Give feedback</h3>
|
|
84
|
-
<p>The next time your agent tries a force-push (or anything dangerous), give it a thumbs-down with context:</p>
|
|
85
|
-
<pre><code>👎 "Never force-push to main. This destroyed 14 commits last time."</code></pre>
|
|
86
|
-
|
|
87
|
-
<h3>Step 3: Check auto-generates</h3>
|
|
88
|
-
<p>ThumbGate captures the feedback, matches it against the tool call pattern, and auto-generates a prevention rule. After repeated failures (configurable), it promotes to a hard check:</p>
|
|
89
|
-
<pre><code># Auto-generated prevention rule
|
|
90
|
-
pattern: "git push --force"
|
|
91
|
-
target_branch: "main"
|
|
92
|
-
action: BLOCK
|
|
93
|
-
reason: "Force-push to main blocked — destroyed 14 commits (2026-03-15)"</code></pre>
|
|
94
|
-
|
|
95
|
-
<h3>Step 4: Check fires on every future attempt</h3>
|
|
96
|
-
<p>The PreToolUse hook checks every <code>Bash</code> tool call. If it matches <code>git push --force</code> targeting <code>main</code>, the action is blocked before execution. The agent receives a rejection with the reason and adapts.</p>
|
|
97
|
-
|
|
98
|
-
<div class="callout">
|
|
99
|
-
<strong>Key difference:</strong> Prompt rules ask nicely. Pre-action checks physically block. The check runs at the hook layer, outside the agent's reasoning chain, so it cannot be overridden by context or chain-of-thought.
|
|
100
|
-
</div>
|
|
101
|
-
|
|
102
|
-
<h2>What about other dangerous actions?</h2>
|
|
103
|
-
<p>The same pattern works for any tool call you want to prevent:</p>
|
|
104
|
-
<ul>
|
|
105
|
-
<li><code>DROP TABLE</code> on production databases</li>
|
|
106
|
-
<li><code>rm -rf</code> on project directories</li>
|
|
107
|
-
<li>Committing <code>.env</code> files with secrets</li>
|
|
108
|
-
<li>Running untested migrations on prod</li>
|
|
109
|
-
<li>Skipping test suites before deploy</li>
|
|
110
|
-
</ul>
|
|
111
|
-
<p>Every thumbs-down teaches the system. Thompson Sampling adapts check sensitivity: high-risk patterns get strict enforcement, low-risk ones stay relaxed.</p>
|
|
112
|
-
|
|
113
|
-
<div class="cta-box">
|
|
114
|
-
<h2 style="color:var(--text);font-size:1.3rem;margin:0 0 8px;">Try it now</h2>
|
|
115
|
-
<p>One command. Your agent stops repeating mistakes today.</p>
|
|
116
|
-
<div class="cta-install">$ npx thumbgate init</div>
|
|
117
|
-
</div>
|
|
118
|
-
|
|
119
|
-
<div class="related">
|
|
120
|
-
<h3>Related guides</h3>
|
|
121
|
-
<a href="/learn/vibe-coding-safety-net">The Vibe Coding Safety Net You Are Missing →</a>
|
|
122
|
-
<a href="/learn/mcp-pre-action-checks-explained">MCP Pre-Action Checks Explained →</a>
|
|
123
|
-
<a href="/guide">Full Setup Guide →</a>
|
|
124
|
-
</div>
|
|
125
|
-
</div>
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
<div class="sticky-cta">
|
|
129
|
-
<span style="color:var(--muted)">Try it now:</span>
|
|
130
|
-
<code>npx thumbgate init</code>
|
|
131
|
-
<a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub →</a>
|
|
132
|
-
</div>
|
|
133
|
-
</body>
|
|
134
|
-
</html>
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>The Vibe Coding Safety Net You Are Missing — ThumbGate</title>
|
|
7
|
-
<script defer data-domain="thumbgate.ai" src="https://plausible.io/js/script.js"></script>
|
|
8
|
-
<meta name="description" content="Vibe coding is fast until your AI agent deletes a production table or rewrites a file you did not ask it to touch. Add guardrails without slowing down.">
|
|
9
|
-
<meta name="keywords" content="vibe coding safety, vibe coding guardrails, AI coding mistakes, Claude Code safety net, Cursor agent guardrails, AI agent enforcement, ThumbGate">
|
|
10
|
-
<meta property="og:title" content="The Vibe Coding Safety Net You Are Missing">
|
|
11
|
-
<meta property="og:description" content="Vibe coding is fast until your AI agent breaks something. Add guardrails without slowing down.">
|
|
12
|
-
<meta property="og:type" content="article">
|
|
13
|
-
<meta property="og:url" content="https://thumbgate.ai/learn/vibe-coding-safety-net">
|
|
14
|
-
<link rel="canonical" href="https://thumbgate.ai/learn/vibe-coding-safety-net">
|
|
15
|
-
|
|
16
|
-
<script type="application/ld+json">
|
|
17
|
-
{
|
|
18
|
-
"@context": "https://schema.org",
|
|
19
|
-
"@type": "TechArticle",
|
|
20
|
-
"headline": "The Vibe Coding Safety Net You Are Missing",
|
|
21
|
-
"description": "Vibe coding is fast until your AI agent breaks something. Here is how to add guardrails that learn from your corrections.",
|
|
22
|
-
"author": {
|
|
23
|
-
"@type": "Person",
|
|
24
|
-
"name": "Igor Ganapolsky",
|
|
25
|
-
"url": "https://github.com/IgorGanapolsky"
|
|
26
|
-
},
|
|
27
|
-
"publisher": {
|
|
28
|
-
"@type": "Organization",
|
|
29
|
-
"name": "ThumbGate",
|
|
30
|
-
"url": "https://thumbgate.ai"
|
|
31
|
-
},
|
|
32
|
-
"datePublished": "2026-04-01",
|
|
33
|
-
"dateModified": "2026-04-01",
|
|
34
|
-
"mainEntityOfPage": "https://thumbgate.ai/learn/vibe-coding-safety-net"
|
|
35
|
-
}
|
|
36
|
-
</script>
|
|
37
|
-
|
|
38
|
-
<link rel="stylesheet" href="/learn/learn.css">
|
|
39
|
-
<style>
|
|
40
|
-
.comparison { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 1.5rem 0; }
|
|
41
|
-
.comparison > div { background: var(--bg-card); border: 1px solid var(--border); border-radius: 8px; padding: 1rem; }
|
|
42
|
-
.comparison h4 { font-size: 0.95rem; margin-bottom: 0.5rem; }
|
|
43
|
-
.comparison .bad h4 { color: var(--red); }
|
|
44
|
-
.comparison .good h4 { color: var(--green); }
|
|
45
|
-
@media (max-width: 700px) { .comparison { grid-template-columns: 1fr; } }
|
|
46
|
-
</style>
|
|
47
|
-
</head>
|
|
48
|
-
<body>
|
|
49
|
-
|
|
50
|
-
<nav>
|
|
51
|
-
<a href="/" class="brand"><img src="/assets/brand/thumbgate-mark-inline.svg" alt="ThumbGate" class="logo-mark" width="28" height="28"><span class="logo-text">ThumbGate</span></a>
|
|
52
|
-
<a href="/guide">Setup Guide</a>
|
|
53
|
-
<a href="/learn">Learn</a>
|
|
54
|
-
<a href="/dashboard">Dashboard</a>
|
|
55
|
-
<a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub</a>
|
|
56
|
-
</nav>
|
|
57
|
-
|
|
58
|
-
<div class="container">
|
|
59
|
-
<div class="breadcrumb"><a href="/learn">Learn</a> / Vibe Coding Safety Net</div>
|
|
60
|
-
<h1>The Vibe Coding Safety Net You Are Missing</h1>
|
|
61
|
-
<p style="color:var(--muted);">3 min read · For developers who vibe-code with Claude Code, Cursor, Codex, or Gemini</p>
|
|
62
|
-
|
|
63
|
-
<div class="tldr"><strong>TL;DR:</strong> Vibe coding is 10x faster until your agent breaks something. Add a feedback-driven safety net that learns from your corrections — without slowing you down.</div>
|
|
64
|
-
|
|
65
|
-
<h2>Vibe coding is a superpower with a blindspot</h2>
|
|
66
|
-
<p>You describe what you want. The agent builds it. You ship in hours what used to take days. But every vibe-coder has hit this wall: the agent does something catastrophically wrong, and you realize there was nothing stopping it.</p>
|
|
67
|
-
|
|
68
|
-
<div class="comparison">
|
|
69
|
-
<div class="bad">
|
|
70
|
-
<h4>Without guardrails</h4>
|
|
71
|
-
<ul>
|
|
72
|
-
<li>Agent rewrites a file you did not mention</li>
|
|
73
|
-
<li>Agent runs <code>DROP TABLE</code> in prod</li>
|
|
74
|
-
<li>Agent force-pushes over teammate's commits</li>
|
|
75
|
-
<li>Agent installs a dependency you rejected yesterday</li>
|
|
76
|
-
<li>Same mistake repeats every session</li>
|
|
77
|
-
</ul>
|
|
78
|
-
</div>
|
|
79
|
-
<div class="good">
|
|
80
|
-
<h4>With ThumbGate</h4>
|
|
81
|
-
<ul>
|
|
82
|
-
<li>Check blocks file writes outside scope</li>
|
|
83
|
-
<li>Check blocks destructive SQL before execution</li>
|
|
84
|
-
<li>Check blocks force-push to protected branches</li>
|
|
85
|
-
<li>Check remembers your rejection across sessions</li>
|
|
86
|
-
<li>Mistakes are blocked permanently after feedback</li>
|
|
87
|
-
</ul>
|
|
88
|
-
</div>
|
|
89
|
-
</div>
|
|
90
|
-
|
|
91
|
-
<h2>Why CLAUDE.md and .cursorrules are not enough</h2>
|
|
92
|
-
<p>Prompt rules live inside the agent's context. They compete with your conversation, the codebase, and the agent's own reasoning. When the context window fills up, prompt rules are the first thing to get compressed or ignored.</p>
|
|
93
|
-
<p>Pre-action checks live <em>outside</em> the agent. They intercept tool calls at the hook layer (PreToolUse in MCP) before execution. The agent cannot override them because the check runs in a separate process.</p>
|
|
94
|
-
|
|
95
|
-
<div class="callout callout-green">
|
|
96
|
-
<strong>Mental model:</strong> Prompt rules are speed limit signs. Pre-action checks are physical barriers. Signs can be ignored. Barriers cannot.
|
|
97
|
-
</div>
|
|
98
|
-
|
|
99
|
-
<h2>How to add guardrails in two minutes</h2>
|
|
100
|
-
<ol>
|
|
101
|
-
<li><strong>Install:</strong> <code>npx thumbgate init</code> — auto-detects your agent and configures hooks</li>
|
|
102
|
-
<li><strong>Code normally:</strong> vibe-code as you always do, no workflow changes</li>
|
|
103
|
-
<li><strong>Correct when needed:</strong> when the agent does something wrong, give it a thumbs-down with context</li>
|
|
104
|
-
<li><strong>Checks build themselves:</strong> repeated failures auto-promote into prevention rules that block the action next time</li>
|
|
105
|
-
</ol>
|
|
106
|
-
|
|
107
|
-
<h2>It gets smarter over time</h2>
|
|
108
|
-
<p>ThumbGate uses Thompson Sampling to adapt enforcement. Patterns that cause real damage get strict checks. Low-risk patterns stay relaxed. The system tunes itself based on your feedback — no manual rule-writing required.</p>
|
|
109
|
-
<p>Every correction you make improves the model. Every thumbs-up reinforces good behavior. Over weeks, your agent develops an immune system tailored to your codebase and workflow.</p>
|
|
110
|
-
|
|
111
|
-
<h2>What vibe-coders actually check</h2>
|
|
112
|
-
<p>Based on real usage patterns from ThumbGate users:</p>
|
|
113
|
-
<ul>
|
|
114
|
-
<li><strong>Git operations:</strong> force-push, branch deletion, rebase on shared branches</li>
|
|
115
|
-
<li><strong>File mutations:</strong> writes to config files, package.json changes, lock file modifications</li>
|
|
116
|
-
<li><strong>Database operations:</strong> destructive SQL, schema migrations without backup</li>
|
|
117
|
-
<li><strong>Dependency management:</strong> installing packages the developer already rejected</li>
|
|
118
|
-
<li><strong>Deployment:</strong> pushing to production without test suite passing</li>
|
|
119
|
-
</ul>
|
|
120
|
-
|
|
121
|
-
<div class="cta-box">
|
|
122
|
-
<h2 style="color:var(--text);font-size:1.3rem;margin:0 0 8px;">Start with one check</h2>
|
|
123
|
-
<p>Install, vibe-code, and give your first thumbs-down. The safety net builds itself.</p>
|
|
124
|
-
<div class="cta-install">$ npx thumbgate init</div>
|
|
125
|
-
</div>
|
|
126
|
-
|
|
127
|
-
<div class="related">
|
|
128
|
-
<h3>Related guides</h3>
|
|
129
|
-
<a href="/learn/stop-ai-agent-force-push">How to Stop AI Agents From Force-Pushing to Main →</a>
|
|
130
|
-
<a href="/learn/mcp-pre-action-checks-explained">MCP Pre-Action Checks Explained →</a>
|
|
131
|
-
<a href="/guide">Full Setup Guide →</a>
|
|
132
|
-
</div>
|
|
133
|
-
</div>
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
<div class="sticky-cta">
|
|
137
|
-
<span style="color:var(--muted)">Try it now:</span>
|
|
138
|
-
<code>npx thumbgate init</code>
|
|
139
|
-
<a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub →</a>
|
|
140
|
-
</div>
|
|
141
|
-
</body>
|
|
142
|
-
</html>
|