thumbgate 1.27.12 → 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.
Files changed (132) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.well-known/llms.txt +2 -1
  3. package/.well-known/mcp/server-card.json +1 -1
  4. package/README.md +2 -4
  5. package/adapters/claude/.mcp.json +2 -2
  6. package/adapters/mcp/server-stdio.js +1 -1
  7. package/adapters/opencode/opencode.json +1 -1
  8. package/adapters/policy-engine/ethicore-guardian-client.js +68 -0
  9. package/adapters/policy-engine/thumbgate-policy-engine-adapter.js +260 -0
  10. package/bin/cli.js +78 -259
  11. package/config/gate-templates.json +0 -228
  12. package/config/gates/claim-verification.json +0 -18
  13. package/package.json +35 -25
  14. package/public/assets/brand/thumbgate-logo-transparent.svg +22 -0
  15. package/public/assets/brand/thumbgate-mark-inline-v3.svg +19 -0
  16. package/public/assets/brand/thumbgate-mark.svg +11 -5
  17. package/public/blog.html +0 -30
  18. package/public/brand/thumbgate-mark.svg +9 -5
  19. package/public/chatgpt-app.html +2 -2
  20. package/public/compare.html +2 -1
  21. package/public/dashboard.html +1 -1
  22. package/public/federal.html +1 -1
  23. package/public/index.html +95 -216
  24. package/public/learn.html +59 -35
  25. package/public/lessons.html +1 -1
  26. package/public/numbers.html +2 -2
  27. package/public/pro.html +7 -7
  28. package/scripts/aws-blocks-guardrails.js +228 -0
  29. package/scripts/cli-schema.js +22 -10
  30. package/scripts/dashboard-chat.js +2 -1
  31. package/scripts/document-intake.js +1 -49
  32. package/scripts/durability/step.js +3 -3
  33. package/scripts/gate-stats.js +5 -11
  34. package/scripts/gates-engine.js +0 -49
  35. package/scripts/gemini-embedding-policy.js +2 -1
  36. package/scripts/hook-stop-anti-claim.js +116 -184
  37. package/scripts/hosted-config.js +0 -12
  38. package/scripts/lesson-search.js +1 -15
  39. package/scripts/llm-client.js +187 -5
  40. package/scripts/plausible-domain-config.js +3 -1
  41. package/scripts/seo-gsd.js +240 -1
  42. package/scripts/tool-registry.js +2 -2
  43. package/scripts/vector-store.js +44 -0
  44. package/scripts/workspace-evolver.js +62 -2
  45. package/src/api/server.js +340 -131
  46. package/public/assets/brand/thumbgate-mark-inline.svg +0 -15
  47. package/public/compare/adopt-ai.html +0 -219
  48. package/public/compare/agentix-labs.html +0 -197
  49. package/public/compare/ai-experience-orchestration.html +0 -216
  50. package/public/compare/anthropic-claude-for-legal.html +0 -260
  51. package/public/compare/anthropic-containment.html +0 -280
  52. package/public/compare/arcade.html +0 -175
  53. package/public/compare/arcjet.html +0 -239
  54. package/public/compare/bumblebee.html +0 -307
  55. package/public/compare/claude-code-hooks.html +0 -294
  56. package/public/compare/databricks-unity-ai-gateway.html +0 -215
  57. package/public/compare/fallow.html +0 -351
  58. package/public/compare/heidi.html +0 -233
  59. package/public/compare/mem0.html +0 -342
  60. package/public/compare/oak-and-sparrow-gatekeeper.html +0 -289
  61. package/public/compare/rein.html +0 -236
  62. package/public/compare/sigmashake.html +0 -256
  63. package/public/compare/speclock.html +0 -342
  64. package/public/guides/agent-harness-optimization.html +0 -342
  65. package/public/guides/agentic-web-governance.html +0 -406
  66. package/public/guides/ai-agent-governance-sprint.html +0 -415
  67. package/public/guides/ai-agent-pre-action-approval-gates.html +0 -401
  68. package/public/guides/ai-agent-workflow-migration-checklist.html +0 -392
  69. package/public/guides/ai-deployment-readiness.html +0 -415
  70. package/public/guides/ai-mode-ads-agent-governance.html +0 -401
  71. package/public/guides/ai-search-topical-presence.html +0 -342
  72. package/public/guides/autoresearch-agent-safety.html +0 -342
  73. package/public/guides/background-agent-governance.html +0 -358
  74. package/public/guides/best-tools-stop-ai-agents-breaking-production.html +0 -363
  75. package/public/guides/browser-automation-safety.html +0 -342
  76. package/public/guides/chatgpt-ads-trust.html +0 -353
  77. package/public/guides/claude-code-feedback.html +0 -339
  78. package/public/guides/claude-code-prevent-repeated-mistakes.html +0 -161
  79. package/public/guides/claude-code-skills-guardrails.html +0 -343
  80. package/public/guides/claude-desktop.html +0 -356
  81. package/public/guides/code-knowledge-graph-guardrails.html +0 -365
  82. package/public/guides/codex-cli-guardrails.html +0 -339
  83. package/public/guides/cursor-agent-guardrails.html +0 -339
  84. package/public/guides/cursor-prevent-repeated-mistakes.html +0 -161
  85. package/public/guides/database-agent-safety.html +0 -406
  86. package/public/guides/deepseek-v4-runtime-guardrails.html +0 -346
  87. package/public/guides/developer-machine-supply-chain-guardrails.html +0 -358
  88. package/public/guides/gcp-mcp-guardrails.html +0 -147
  89. package/public/guides/gemini-cli-feedback-memory.html +0 -339
  90. package/public/guides/gpt-5-5-model-evaluation.html +0 -358
  91. package/public/guides/internal-ai-engineering-stack-guardrails.html +0 -348
  92. package/public/guides/long-running-agent-context-management.html +0 -346
  93. package/public/guides/mcp-tool-governance.html +0 -401
  94. package/public/guides/multica-thumbgate-setup.html +0 -134
  95. package/public/guides/native-messaging-host-security.html +0 -342
  96. package/public/guides/policy-engine-pre-action-gates.html +0 -346
  97. package/public/guides/pre-action-checks.html +0 -342
  98. package/public/guides/pretooluse-hooks-vs-advisory-prompt-rules.html +0 -342
  99. package/public/guides/prompt-tricks-to-workflow-rules.html +0 -365
  100. package/public/guides/proxy-pointer-rag-guardrails.html +0 -352
  101. package/public/guides/rag-precision-tuning-guardrails.html +0 -352
  102. package/public/guides/reasoning-compression-guardrails.html +0 -346
  103. package/public/guides/relational-knowledge-ai-recommendations.html +0 -342
  104. package/public/guides/roo-code-alternative-cline.html +0 -339
  105. package/public/guides/semantic-programmatic-seo-guardrails.html +0 -352
  106. package/public/guides/seo-agent-skills-guardrails.html +0 -344
  107. package/public/guides/stop-repeated-ai-agent-mistakes.html +0 -342
  108. package/public/learn/ac-dc-runtime-enforcement.html +0 -277
  109. package/public/learn/agent-harness-pattern.html +0 -181
  110. package/public/learn/agent-identity-connector-governance.html +0 -146
  111. package/public/learn/agent-swarms-shared-gates.html +0 -173
  112. package/public/learn/agentic-enterprise-context-brain.html +0 -117
  113. package/public/learn/agentic-os-team-governance.html +0 -146
  114. package/public/learn/ai-agent-governance.html +0 -158
  115. package/public/learn/ai-agent-persistent-memory.html +0 -211
  116. package/public/learn/anthropomorphic-claim-gates.html +0 -180
  117. package/public/learn/background-agent-control-layer.html +0 -184
  118. package/public/learn/claude-code-goal-with-rubrics.html +0 -205
  119. package/public/learn/codex-role-plugins-need-governance.html +0 -125
  120. package/public/learn/cost-aware-agent-gate-routing.html +0 -173
  121. package/public/learn/databricks-unity-ai-gateway-runtime-governance.html +0 -157
  122. package/public/learn/deterministic-agent-workflows.html +0 -185
  123. package/public/learn/feedback-loop-vs-decision-layer.html +0 -283
  124. package/public/learn/from-prototype-to-production.html +0 -223
  125. package/public/learn/learn.css +0 -51
  126. package/public/learn/mcp-pre-action-checks-explained.html +0 -172
  127. package/public/learn/pretix-stripe-connect-marketplaces.html +0 -161
  128. package/public/learn/regulated-agent-execution-boundary.html +0 -196
  129. package/public/learn/spec-driven-development.html +0 -168
  130. package/public/learn/stop-ai-agent-force-push.html +0 -134
  131. package/public/learn/vibe-coding-safety-net.html +0 -142
  132. package/scripts/reddit-browser-notification-watch.js +0 -230
@@ -1,358 +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>Developer Machine Supply Chain Guardrails | ThumbGate Guide</title>
7
- <meta name="description" content="Developer laptops and CI runners hold tokens, package-manager trust, and one-shot CLI install paths. ThumbGate turns that local execution risk into pre-actio..." />
8
- <meta property="og:title" content="Developer Machine Supply Chain Guardrails | ThumbGate Guide" />
9
- <meta property="og:description" content="Developer laptops and CI runners hold tokens, package-manager trust, and one-shot CLI install paths. ThumbGate turns that local execution risk into pre-actio..." />
10
- <meta property="og:type" content="article" />
11
- <meta property="og:url" content="https://thumbgate.ai/guides/developer-machine-supply-chain-guardrails" />
12
- <link rel="canonical" href="https://thumbgate.ai/guides/developer-machine-supply-chain-guardrails" />
13
- <link rel="llm-context" href="/llm-context.md" type="text/markdown" />
14
- <link rel="icon" type="image/svg+xml" href="/thumbgate-icon.png" />
15
- <link rel="apple-touch-icon" href="/assets/brand/thumbgate-mark.svg" />
16
- <meta property="og:image" content="/og.png" />
17
- <style>
18
- :root {
19
- --bg: #0a0a0b;
20
- --bg-raised: #111113;
21
- --bg-card: #161618;
22
- --line: #222225;
23
- --text: #e8e8ec;
24
- --muted: #8b8b96;
25
- --cyan: #22d3ee;
26
- --green: #4ade80;
27
- --red: #f87171;
28
- }
29
- * { box-sizing: border-box; }
30
- body {
31
- margin: 0;
32
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
33
- background: var(--bg);
34
- color: var(--text);
35
- line-height: 1.65;
36
- }
37
- a { color: var(--cyan); text-decoration: none; }
38
- a:hover { text-decoration: underline; }
39
- .container { max-width: 980px; margin: 0 auto; padding: 0 24px; }
40
- .topbar {
41
- position: sticky;
42
- top: 0;
43
- z-index: 20;
44
- backdrop-filter: blur(12px);
45
- background: rgba(10, 10, 11, 0.88);
46
- border-bottom: 1px solid var(--line);
47
- }
48
- .topbar .container {
49
- display: flex;
50
- justify-content: space-between;
51
- align-items: center;
52
- padding-top: 14px;
53
- padding-bottom: 14px;
54
- }
55
- .brand {
56
- font-weight: 700;
57
- color: var(--text);
58
- display: inline-flex;
59
- align-items: center;
60
- gap: 8px;
61
- text-decoration: none;
62
- }
63
- .brand .logo-mark { width: 28px; height: 28px; display: block; }
64
- .hero { padding: 72px 0 32px; }
65
- .eyebrow {
66
- display: inline-flex;
67
- align-items: center;
68
- gap: 8px;
69
- padding: 6px 12px;
70
- border-radius: 999px;
71
- border: 1px solid rgba(34, 211, 238, 0.22);
72
- background: rgba(34, 211, 238, 0.1);
73
- color: var(--cyan);
74
- text-transform: uppercase;
75
- letter-spacing: 0.08em;
76
- font-size: 12px;
77
- font-weight: 700;
78
- }
79
- h1 {
80
- font-size: clamp(34px, 5vw, 56px);
81
- line-height: 1.06;
82
- letter-spacing: -0.04em;
83
- margin: 16px 0;
84
- max-width: 760px;
85
- }
86
- .hero p {
87
- max-width: 720px;
88
- color: var(--muted);
89
- font-size: 18px;
90
- }
91
- .signal-row {
92
- display: flex;
93
- flex-wrap: wrap;
94
- gap: 12px;
95
- margin: 28px 0 0;
96
- }
97
- .signal-pill {
98
- display: inline-flex;
99
- align-items: center;
100
- gap: 8px;
101
- padding: 10px 14px;
102
- border-radius: 999px;
103
- border: 1px solid var(--line);
104
- background: var(--bg-raised);
105
- font-weight: 600;
106
- font-size: 14px;
107
- }
108
- .signal-pill.up {
109
- border-color: rgba(74, 222, 128, 0.28);
110
- color: #b8f7c8;
111
- background: rgba(74, 222, 128, 0.1);
112
- }
113
- .signal-pill.down {
114
- border-color: rgba(248, 113, 113, 0.28);
115
- color: #ffc0c0;
116
- background: rgba(248, 113, 113, 0.1);
117
- }
118
- .grid {
119
- display: grid;
120
- grid-template-columns: minmax(0, 2fr) minmax(280px, 1fr);
121
- gap: 24px;
122
- padding-bottom: 72px;
123
- }
124
- .card, .detail-section, .sidebar-card {
125
- background: var(--bg-card);
126
- border: 1px solid var(--line);
127
- border-radius: 16px;
128
- }
129
- .card { padding: 24px; }
130
- .detail-section { padding: 24px; margin-bottom: 18px; }
131
- .detail-section h2 { margin: 0 0 12px; font-size: 24px; letter-spacing: -0.03em; }
132
- .detail-section p { color: var(--muted); }
133
- .detail-section ul, .card ul { padding-left: 18px; color: var(--muted); }
134
- .card h2 { margin-top: 0; }
135
- .sidebar {
136
- display: flex;
137
- flex-direction: column;
138
- gap: 18px;
139
- }
140
- .sidebar-card {
141
- padding: 20px;
142
- }
143
- /* Only the first sidebar card sticks. Stacking multiple stickies at the
144
- same top offset makes them overlap each other on scroll. The related-
145
- pages card flows normally below. */
146
- .sidebar-card:first-child {
147
- position: sticky;
148
- top: 84px;
149
- max-height: calc(100vh - 104px);
150
- overflow-y: auto;
151
- -webkit-overflow-scrolling: touch;
152
- }
153
- .proof-links {
154
- display: flex;
155
- flex-wrap: wrap;
156
- gap: 12px;
157
- margin-top: 16px;
158
- }
159
- .cta-button {
160
- display: inline-flex;
161
- align-items: center;
162
- justify-content: center;
163
- margin-top: 18px;
164
- padding: 12px 16px;
165
- border-radius: 10px;
166
- background: var(--cyan);
167
- color: #071116;
168
- font-weight: 700;
169
- text-decoration: none;
170
- }
171
- .faq-item {
172
- border-top: 1px solid var(--line);
173
- padding: 14px 0;
174
- }
175
- .faq-item summary {
176
- cursor: pointer;
177
- font-weight: 600;
178
- }
179
- .faq-item p {
180
- color: var(--muted);
181
- }
182
- .related-card {
183
- display: block;
184
- padding: 14px;
185
- border-radius: 12px;
186
- border: 1px solid var(--line);
187
- background: var(--bg-raised);
188
- margin-top: 12px;
189
- color: var(--text);
190
- }
191
- .related-label {
192
- display: block;
193
- color: var(--muted);
194
- font-size: 12px;
195
- text-transform: uppercase;
196
- letter-spacing: 0.08em;
197
- margin-bottom: 4px;
198
- }
199
- @media (max-width: 860px) {
200
- .grid {
201
- grid-template-columns: 1fr;
202
- }
203
- .sidebar-card:first-child {
204
- position: static;
205
- max-height: none;
206
- overflow: visible;
207
- }
208
- }
209
- </style>
210
- <script type="application/ld+json">
211
- {
212
- "@context": "https://schema.org",
213
- "@type": "TechArticle",
214
- "headline": "Stop AI Assistants From Amplifying Supply-Chain Attacks.",
215
- "description": "Developer laptops and CI runners hold tokens, package-manager trust, and one-shot CLI install paths. ThumbGate turns that local execution risk into pre-actio...",
216
- "about": [
217
- "claude code masterclass guardrails",
218
- "cursor prevent repeated mistakes",
219
- "claude code prevent repeated mistakes",
220
- "codex cli guardrails"
221
- ],
222
- "url": "https://thumbgate.ai/guides/developer-machine-supply-chain-guardrails",
223
- "publisher": {
224
- "@type": "Organization",
225
- "name": "ThumbGate",
226
- "url": "https://thumbgate.ai"
227
- },
228
- "mainEntityOfPage": "https://thumbgate.ai/guides/developer-machine-supply-chain-guardrails"
229
- }
230
- </script>
231
- <script type="application/ld+json">
232
- {
233
- "@context": "https://schema.org",
234
- "@type": "FAQPage",
235
- "mainEntity": [
236
- {
237
- "@type": "Question",
238
- "name": "Does ThumbGate replace secrets scanning?",
239
- "acceptedAnswer": {
240
- "@type": "Answer",
241
- "text": "No. Secrets scanners tell you what leaked. ThumbGate blocks or checkpoints the agent behavior that can create or amplify the leak before execution."
242
- }
243
- },
244
- {
245
- "@type": "Question",
246
- "name": "Which supply-chain gate should teams enable first?",
247
- "acceptedAnswer": {
248
- "@type": "Answer",
249
- "text": "Start with one-shot CLI installers and package lifecycle scripts because those paths can execute before a human sees the diff."
250
- }
251
- },
252
- {
253
- "@type": "Question",
254
- "name": "Can this work with existing incident-response tools?",
255
- "acceptedAnswer": {
256
- "@type": "Answer",
257
- "text": "Yes. Use scanner, EDR, and incident-response findings as evidence, then turn the repeated local action pattern into a ThumbGate pre-action rule."
258
- }
259
- }
260
- ]
261
- }
262
- </script>
263
- </head>
264
- <body>
265
- <div class="topbar">
266
- <div class="container">
267
- <a class="brand" href="/"><img src="/assets/brand/thumbgate-mark-inline.svg" alt="ThumbGate" class="logo-mark" width="28" height="28"><span class="logo-text">ThumbGate</span></a>
268
- <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/VERIFICATION_EVIDENCE.md" target="_blank" rel="noopener">Verification evidence</a>
269
- </div>
270
- </div>
271
-
272
- <main class="container">
273
- <section class="hero">
274
- <div class="eyebrow">guide | developer machine supply chain guardrails</div>
275
- <h1>Stop AI Assistants From Amplifying Supply-Chain Attacks.</h1>
276
- <p>Developer laptops and CI runners hold tokens, package-manager trust, and one-shot CLI install paths. ThumbGate turns that local execution risk into pre-action gates before an agent runs npm, PyPI, Docker, or shell commands that can expose credentials.</p>
277
- <div class="signal-row">
278
- <div class="signal-pill up">👍 Thumbs up reinforces good behavior</div>
279
- <div class="signal-pill down">👎 Thumbs down blocks repeated mistakes</div>
280
- </div>
281
- </section>
282
-
283
- <section class="grid">
284
- <div>
285
- <div class="card">
286
- <h2>Why this page exists</h2>
287
- <ul><li>Secrets scanners find leaks; ThumbGate blocks the agent behavior that creates or amplifies them.</li><li>Supply Chain Safety templates should start with package lifecycle scripts, untrusted one-shot CLI installers, dependency autofixes, and credential exposure assessment.</li><li>This is complementary to GitGuardian, endpoint security, and incident response because it governs the next local action.</li></ul>
288
- </div>
289
-
290
- <section class="detail-section">
291
- <h2>Why developer machines are now the blast radius</h2>
292
- <p>A compromised package does not need to break production directly. It can read .env, .npmrc, .pypirc, Docker config, SSH keys, and cloud tokens while an AI coding assistant repeats the trusted-looking command across more repos.</p><p>The high-ROI control is local and specific: detect risky execution before it runs, require review where exposure is plausible, and promote every missed incident into a durable ThumbGate rule.</p>
293
-
294
- </section>
295
- <section class="detail-section">
296
- <h2>High-ROI gate templates</h2>
297
-
298
- <ul><li>Block package lifecycle secret harvest: stop install, postinstall, prepare, and similar scripts from reading local credential surfaces.</li><li>Review untrusted CLI before execution: block curl-to-shell flows, unknown npx commands, uvx, and pipx run until the source and permissions are reviewed.</li><li>Checkpoint dependency bot autofix: warn before Dependabot, Renovate, audit-fix, Docker pull, or broad package updates expand the trusted code surface.</li><li>Require credential exposure assessment: force an answer about what credential lived where, what executed, and whether rotation is required.</li></ul>
299
- </section>
300
- <section class="detail-section">
301
- <h2>Where this creates revenue</h2>
302
- <p>This is a strong security wedge for teams that already run scanners but still let agents execute local install/update commands. The offer is not &quot;replace your scanner&quot;; it is &quot;connect scanner and incident lessons to pre-action enforcement.&quot;</p><p>For the Workflow Hardening Sprint, pick one concrete local-risk pattern: package lifecycle scripts, one-shot installers, dependency bot autofixes, or unresolved credential exposure after a suspected compromise.</p>
303
-
304
- </section>
305
- <div class="detail-section">
306
- <h2>FAQ</h2>
307
-
308
- <details class="faq-item">
309
- <summary>Does ThumbGate replace secrets scanning?</summary>
310
- <p>No. Secrets scanners tell you what leaked. ThumbGate blocks or checkpoints the agent behavior that can create or amplify the leak before execution.</p>
311
- </details>
312
- <details class="faq-item">
313
- <summary>Which supply-chain gate should teams enable first?</summary>
314
- <p>Start with one-shot CLI installers and package lifecycle scripts because those paths can execute before a human sees the diff.</p>
315
- </details>
316
- <details class="faq-item">
317
- <summary>Can this work with existing incident-response tools?</summary>
318
- <p>Yes. Use scanner, EDR, and incident-response findings as evidence, then turn the repeated local action pattern into a ThumbGate pre-action rule.</p>
319
- </details>
320
- </div>
321
- </div>
322
-
323
- <aside class="sidebar">
324
-
325
-
326
-
327
-
328
- <div class="sidebar-card">
329
- <h2>GSD execution brief</h2>
330
- <p>This page was prioritized because it captures high-intent demand around developer machine supply chain guardrails and feeds directly into ThumbGate's proof-led conversion path.</p>
331
- <p><strong>Opportunity score:</strong> 83</p>
332
- <p><strong>Primary persona:</strong> engineering-lead</p>
333
- <p><strong>Keyword cluster:</strong> claude code masterclass guardrails, cursor prevent repeated mistakes, claude code prevent repeated mistakes, codex cli guardrails</p>
334
- <p><strong>Pricing:</strong> Pro $19/mo or $149/yr. Team $49/seat/mo.</p>
335
- <div class="proof-links"><a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/VERIFICATION_EVIDENCE.md" target="_blank" rel="noopener">Verification evidence</a><a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/proof/automation/report.json" target="_blank" rel="noopener">Automation proof</a><a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub repository</a></div>
336
- <a class="cta-button" href="/checkout/pro?utm_source=website&amp;utm_medium=seo_page&amp;utm_campaign=guides_developer-machine-supply-chain-guardrails&amp;cta_placement=seo_brief&amp;plan_id=pro" target="_blank" rel="noopener">Go Pro — $19/mo</a>
337
- </div>
338
- <div class="sidebar-card">
339
- <h2>Related pages</h2>
340
-
341
- <a class="related-card" href="/guides/pre-action-checks">
342
- <span class="related-label">Related page</span>
343
- <strong>What Are Pre-Action Checks?</strong>
344
- </a>
345
- <a class="related-card" href="/guides/code-knowledge-graph-guardrails">
346
- <span class="related-label">Related page</span>
347
- <strong>Code Graphs Are Context. ThumbGate Is Execution Control.</strong>
348
- </a>
349
- <a class="related-card" href="/guides/best-tools-stop-ai-agents-breaking-production">
350
- <span class="related-label">Related page</span>
351
- <strong>Best Tools to Stop AI Agents From Breaking Production</strong>
352
- </a>
353
- </div>
354
- </aside>
355
- </section>
356
- </main>
357
- </body>
358
- </html>
@@ -1,147 +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>BigQuery, Spanner, AlloyDB Agent Guardrails: Gating Google's Agentic Data Cloud MCP Calls</title>
7
- <meta name="description" content="Google's Agentic Data Cloud exposes BigQuery, Spanner, AlloyDB, and Cloud SQL as MCP tool calls that any agent can trigger. IAM does not know what you thumbs-down'd last week. ThumbGate's local lesson DB does." />
8
- <meta property="og:title" content="BigQuery, Spanner, AlloyDB Agent Guardrails: Gating Google's Agentic Data Cloud MCP Calls" />
9
- <meta property="og:description" content="Google's Agentic Data Cloud exposes BigQuery, Spanner, AlloyDB, and Cloud SQL as MCP tool calls that any agent can trigger. IAM does not know what you thumbs-down'd last week. ThumbGate's local lesson DB does." />
10
- <meta property="og:type" content="article" />
11
- <meta property="og:url" content="https://thumbgate.ai/guides/gcp-mcp-guardrails" />
12
- <link rel="canonical" href="https://thumbgate.ai/guides/gcp-mcp-guardrails" />
13
- <link rel="llm-context" href="/llm-context.md" type="text/markdown" />
14
- <link rel="icon" type="image/svg+xml" href="/thumbgate-icon.png" />
15
- <link rel="apple-touch-icon" href="/assets/brand/thumbgate-mark.svg" />
16
- <meta property="og:image" content="/og.png" />
17
- <script type="application/ld+json">
18
- {
19
- "@context": "https://schema.org",
20
- "@type": "TechArticle",
21
- "headline": "BigQuery, Spanner, AlloyDB Agent Guardrails: Gating Google's Agentic Data Cloud MCP Calls",
22
- "description": "Google's Agentic Data Cloud exposes BigQuery, Spanner, AlloyDB, and Cloud SQL as MCP tool calls that any agent can trigger. IAM does not know what you thumbs-down'd last week. ThumbGate's local lesson DB does.",
23
- "author": { "@type": "Person", "name": "Igor Ganapolsky", "url": "https://github.com/IgorGanapolsky" },
24
- "publisher": { "@type": "Organization", "name": "ThumbGate", "url": "https://thumbgate.ai" },
25
- "datePublished": "2026-04-22",
26
- "dateModified": "2026-04-22",
27
- "mainEntityOfPage": "https://thumbgate.ai/guides/gcp-mcp-guardrails"
28
- }
29
- </script>
30
- <style>
31
- :root { --bg: #0a0a0b; --bg-raised: #111113; --bg-card: #161618; --line: #222225; --text: #e8e8ec; --muted: #8b8b96; --cyan: #22d3ee; --green: #4ade80; --red: #f87171; }
32
- * { box-sizing: border-box; }
33
- body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: var(--bg); color: var(--text); line-height: 1.65; }
34
- a { color: var(--cyan); text-decoration: none; } a:hover { text-decoration: underline; }
35
- .container { max-width: 820px; margin: 0 auto; padding: 0 24px; }
36
- .topbar { position: sticky; top: 0; z-index: 20; backdrop-filter: blur(12px); background: rgba(10,10,11,0.88); border-bottom: 1px solid var(--line); }
37
- .topbar .container { display: flex; justify-content: space-between; align-items: center; padding: 14px 24px; }
38
- .brand { font-weight: 700; color: var(--text); text-decoration: none; }
39
- h1 { font-size: clamp(30px, 5vw, 46px); line-height: 1.15; margin: 40px 0 16px; }
40
- h2 { font-size: 24px; margin: 36px 0 12px; color: var(--cyan); }
41
- h3 { font-size: 18px; margin: 24px 0 8px; }
42
- p, li { font-size: 17px; color: var(--text); }
43
- .muted { color: var(--muted); }
44
- code, pre { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 14px; }
45
- pre { background: var(--bg-card); border: 1px solid var(--line); border-radius: 10px; padding: 16px; overflow-x: auto; }
46
- code.inline { background: var(--bg-card); padding: 2px 6px; border-radius: 4px; color: var(--cyan); }
47
- .eyebrow { display: inline-block; padding: 6px 12px; border-radius: 999px; border: 1px solid rgba(34,211,238,0.22); background: rgba(34,211,238,0.1); color: var(--cyan); text-transform: uppercase; letter-spacing: 0.08em; font-size: 12px; font-weight: 700; }
48
- .cta { display: inline-block; background: var(--cyan); color: #000; padding: 14px 22px; border-radius: 10px; font-weight: 700; margin: 24px 0; }
49
- article { padding: 24px 0 80px; }
50
- footer { border-top: 1px solid var(--line); padding: 32px 0; color: var(--muted); font-size: 14px; }
51
- </style>
52
- </head>
53
- <body>
54
- <header class="topbar">
55
- <div class="container">
56
- <a class="brand" href="/">ThumbGate</a>
57
- <nav><a href="/guides/">Guides</a> · <a href="https://github.com/IgorGanapolsky/ThumbGate">GitHub</a></nav>
58
- </div>
59
- </header>
60
-
61
- <main class="container">
62
- <article>
63
- <span class="eyebrow">Cloud Next 2026</span>
64
- <h1>BigQuery, Spanner, AlloyDB Agent Guardrails: Gating Google's Agentic Data Cloud MCP Calls</h1>
65
- <p class="muted">Google Cloud Next 2026 shipped the Agentic Data Cloud: BigQuery, Spanner, AlloyDB, Cloud SQL, and Looker are all exposed as MCP tool calls, and the Data Agent Kit drops those tools into Claude Code, Codex, Gemini CLI, and VS Code on day one. Existing IAM policies gate who can call what. They do not gate what your agent already learned not to do.</p>
66
-
67
- <h2>What changed on April 22, 2026</h2>
68
- <p>Google announced the Agentic Data Cloud at Cloud Next. Three pieces matter for anyone running an AI coding agent:</p>
69
- <ul>
70
- <li><strong>Knowledge Catalog remote MCP</strong> — semantic metadata for every table, column, and warehouse surface, exposed through an MCP server.</li>
71
- <li><strong>Core-engine MCP</strong> — BigQuery, Spanner, AlloyDB, and Cloud SQL each speak MCP directly. Your agent can query, mutate, and describe tables through a standard tool-call wire.</li>
72
- <li><strong>Data Agent Kit</strong> — a portable set of MCP tools and IDE extensions that drop into VS Code, Claude Code, Gemini CLI, and Codex.</li>
73
- </ul>
74
- <p>Net effect: every schema is now a surface your agent can call. The blast radius of a single bad tool call just grew by the width of your cloud warehouse.</p>
75
-
76
- <h2>Why IAM is not the answer</h2>
77
- <p>IAM and VPC Service Controls gate <em>who</em> can call an operation. They do not gate <em>what you already taught your agent not to do.</em> An agent running under a service account with <code class="inline">bigquery.tables.delete</code> has permission to drop the table. IAM will not stop it. Your "don't drop prod tables" thumbs-down from last Tuesday lives in a lesson, not a role.</p>
78
- <p>The role-based layer and the feedback-based layer are orthogonal. IAM protects the tenant. ThumbGate protects the session.</p>
79
-
80
- <h2>What ThumbGate gates at the MCP boundary</h2>
81
- <p>ThumbGate runs as an MCP server next to your agent and maintains a local SQLite lesson database at <code class="inline">.thumbgate/memory.sqlite</code>. Every thumbs-down becomes a row. On every subsequent tool call, ThumbGate's <code class="inline">gate_check</code> intercepts the proposed call and blocks known-bad patterns before execution. For Google's Agentic Data Cloud surfaces, the high-value patterns are:</p>
82
- <ul>
83
- <li><strong>BigQuery destructive DDL</strong> — <code class="inline">DROP TABLE</code>, <code class="inline">DROP DATASET</code>, <code class="inline">TRUNCATE TABLE</code>, <code class="inline">ALTER TABLE ... DROP COLUMN</code> on any dataset matching <code class="inline">prod_*</code>.</li>
84
- <li><strong>BigQuery unscoped DML</strong> — <code class="inline">DELETE FROM &lt;table&gt; WHERE 1=1</code>, <code class="inline">UPDATE</code> without a <code class="inline">WHERE</code>, any mutation whose predicate did not match the previous <code class="inline">SELECT COUNT(*)</code>.</li>
85
- <li><strong>Spanner schema mutations</strong> — <code class="inline">DROP TABLE</code>, <code class="inline">DROP INDEX</code>, schema change DDL on labeled-prod instances.</li>
86
- <li><strong>AlloyDB / Cloud SQL</strong> — <code class="inline">TRUNCATE</code>, unscoped <code class="inline">DELETE</code>, extension drops, <code class="inline">gcloud sql instances delete</code>, <code class="inline">gcloud sql instances patch ... --no-backup</code>.</li>
87
- <li><strong>IAM escalation</strong> — <code class="inline">gcloud projects add-iam-policy-binding</code> granting <code class="inline">roles/owner</code> or <code class="inline">roles/iam.serviceAccountTokenCreator</code> from an agent session.</li>
88
- </ul>
89
-
90
- <h2>Install alongside your Google Cloud agent</h2>
91
- <p>The Data Agent Kit ships into Claude Code, Codex, Gemini CLI, and VS Code — every one of those is a first-class ThumbGate-supported agent. One install per agent:</p>
92
- <pre><code># Claude Code (most common path for BigQuery work)
93
- npx thumbgate init --agent claude-code
94
-
95
- # Codex
96
- npx thumbgate init --agent codex
97
-
98
- # Gemini CLI
99
- npx thumbgate init --agent gemini</code></pre>
100
- <p>The installer writes the MCP server config, wires the PreToolUse hook, creates <code class="inline">.thumbgate/memory.sqlite</code>, and prints every file it touched so you can roll back.</p>
101
-
102
- <h2>Zero-Friction Enterprise Vertex AI Setup</h2>
103
- <p>For enterprise teams, configure ThumbGate to route checks securely through Vertex AI using compliant Gemini models inside your corporate VPC with zero friction:</p>
104
- <pre><code>npx thumbgate setup-vertex</code></pre>
105
- <p>This automatically detects your active gcloud session, enables the Vertex AI API in your project, and writes the secure credentials to your local <code>.env</code> file. No manual console configurations required.</p>
106
-
107
- <h2>Teach it a BigQuery lesson</h2>
108
- <p>The first time your agent proposes <code class="inline">DROP TABLE prod_events</code>, capture the thumbs-down with zero friction:</p>
109
- <pre><code>npx thumbgate capture down "destructive DDL on a prod BigQuery table" "require explicit confirmation before any DROP on prod_* datasets" --tags="bigquery,ddl,prod"</code></pre>
110
- <p>Every future agent session — Claude Code, Codex, Gemini CLI, tomorrow morning's autopilot run — now checks this lesson against proposed tool calls before firing them.</p>
111
-
112
- <h2>Knowledge Catalog vs. ThumbGate memory</h2>
113
- <p>Google's Knowledge Catalog and the Agent Platform Memory Bank are different memory classes from ThumbGate's lesson DB:</p>
114
- <ul>
115
- <li><strong>Knowledge Catalog</strong> — semantic metadata about your data. "This column is PII, this table holds transactions."</li>
116
- <li><strong>Memory Bank</strong> — conversational recall for the agent. "The user prefers Python over SQL."</li>
117
- <li><strong>ThumbGate lesson DB</strong> — tool-call behavior memory. "Never <code class="inline">DROP TABLE</code> on prod after last Tuesday's thumbs-down."</li>
118
- </ul>
119
- <p>All three coexist. None replaces the others.</p>
120
-
121
- <a class="cta" href="https://github.com/IgorGanapolsky/ThumbGate">Install ThumbGate →</a>
122
-
123
- <h2>FAQ</h2>
124
- <h3>Does ThumbGate need a separate "Google" adapter?</h3>
125
- <p>No. The Data Agent Kit drops into Claude Code, Codex, Gemini CLI, and VS Code, all of which are first-class ThumbGate-supported agents. Install ThumbGate against your CLI of choice and the gate runs against every MCP call — including the ones Google just added.</p>
126
-
127
- <h3>Does the gate add latency on BigQuery queries?</h3>
128
- <p>The gate reads a local SQLite row and runs a pattern match. Typical overhead is under 5 ms per proposed tool call, measured against an empty warm cache. Your BigQuery query itself is still bounded by Google's SLA, not ours.</p>
129
-
130
- <h3>What happens on an autopilot / scheduled run?</h3>
131
- <p>The gate runs on every tool call regardless of origin. Whether Claude Code fired it from your terminal, an autopilot job triggered it at 9am, or Gemini CLI ran it from a CI hook — the PreToolUse hook still checks the lesson DB first.</p>
132
-
133
- <h3>Does ThumbGate send my query text to any external service?</h3>
134
- <p>No. The lesson DB is local SQLite. The gate check is local. No outbound network call is required for enforcement.</p>
135
-
136
- <h3>Can I use ThumbGate with Google's Agent Platform (managed agents)?</h3>
137
- <p>ThumbGate gates tool calls at the agent process that speaks MCP. For managed Agent Platform agents that run inside Google, the equivalent enforcement lives in IAM and VPC Service Controls. ThumbGate is the local-development and self-hosted companion — run it wherever your agent's process is under your control.</p>
138
- </article>
139
- </main>
140
-
141
- <footer>
142
- <div class="container">
143
- <p>ThumbGate — pre-action checks for AI coding agents. <a href="https://github.com/IgorGanapolsky/ThumbGate">GitHub</a> · <a href="/">Home</a></p>
144
- </div>
145
- </footer>
146
- </body>
147
- </html>