thumbgate 1.14.1 → 1.16.0

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 (150) hide show
  1. package/.claude-plugin/marketplace.json +6 -6
  2. package/.claude-plugin/plugin.json +3 -3
  3. package/.well-known/llms.txt +5 -5
  4. package/.well-known/mcp/server-card.json +1 -1
  5. package/README.md +60 -35
  6. package/adapters/chatgpt/openapi.yaml +118 -2
  7. package/adapters/claude/.mcp.json +2 -2
  8. package/adapters/mcp/server-stdio.js +217 -84
  9. package/adapters/opencode/opencode.json +1 -1
  10. package/bench/prompt-eval-suite.json +5 -1
  11. package/bin/cli.js +211 -8
  12. package/config/enforcement.json +59 -7
  13. package/config/evals/agent-safety-eval.json +338 -22
  14. package/config/gates/default.json +33 -0
  15. package/config/gates/routine.json +43 -0
  16. package/config/github-about.json +3 -3
  17. package/config/mcp-allowlists.json +4 -0
  18. package/config/merge-quality-checks.json +2 -1
  19. package/config/model-candidates.json +131 -0
  20. package/openapi/openapi.yaml +118 -2
  21. package/package.json +70 -51
  22. package/public/blog.html +7 -7
  23. package/public/codex-plugin.html +13 -7
  24. package/public/compare.html +29 -23
  25. package/public/dashboard.html +105 -12
  26. package/public/guide.html +28 -28
  27. package/public/index.html +233 -97
  28. package/public/learn.html +87 -20
  29. package/public/lessons.html +26 -2
  30. package/public/numbers.html +271 -0
  31. package/public/pro.html +89 -19
  32. package/scripts/agent-audit-trace.js +55 -0
  33. package/scripts/agent-memory-lifecycle.js +96 -0
  34. package/scripts/agent-readiness-plan.js +118 -0
  35. package/scripts/agentic-data-pipeline.js +21 -1
  36. package/scripts/agents-sdk-sandbox-plan.js +57 -0
  37. package/scripts/ai-org-governance.js +98 -0
  38. package/scripts/ai-search-distribution.js +43 -0
  39. package/scripts/artifact-agent-plan.js +81 -0
  40. package/scripts/billing.js +27 -8
  41. package/scripts/cli-feedback.js +2 -1
  42. package/scripts/cli-schema.js +60 -5
  43. package/scripts/code-mode-mcp-plan.js +71 -0
  44. package/scripts/commercial-offer.js +1 -1
  45. package/scripts/context-engine.js +1 -2
  46. package/scripts/context-manager.js +4 -1
  47. package/scripts/contextfs.js +214 -32
  48. package/scripts/dashboard-render-spec.js +1 -1
  49. package/scripts/dashboard.js +275 -9
  50. package/scripts/decision-journal.js +13 -3
  51. package/scripts/document-workflow-governance.js +62 -0
  52. package/scripts/enterprise-agent-rollout.js +34 -0
  53. package/scripts/experience-replay-governance.js +69 -0
  54. package/scripts/export-hf-dataset.js +1 -1
  55. package/scripts/feedback-loop.js +141 -9
  56. package/scripts/feedback-to-rules.js +17 -23
  57. package/scripts/gates-engine.js +4 -6
  58. package/scripts/growth-campaigns.js +49 -0
  59. package/scripts/harness-selector.js +145 -1
  60. package/scripts/hybrid-supervisor-agent.js +64 -0
  61. package/scripts/inference-cache-policy.js +72 -0
  62. package/scripts/inference-economics.js +53 -0
  63. package/scripts/internal-agent-bootstrap.js +12 -2
  64. package/scripts/knowledge-layer-plan.js +108 -0
  65. package/scripts/lesson-canonical.js +181 -0
  66. package/scripts/lesson-db.js +71 -10
  67. package/scripts/lesson-inference.js +183 -44
  68. package/scripts/lesson-search.js +4 -1
  69. package/scripts/lesson-synthesis.js +23 -2
  70. package/scripts/llm-client.js +157 -26
  71. package/scripts/mailer/resend-mailer.js +112 -1
  72. package/scripts/mcp-transport-strategy.js +66 -0
  73. package/scripts/memory-store-governance.js +60 -0
  74. package/scripts/meta-agent-loop.js +7 -13
  75. package/scripts/model-access-eligibility.js +38 -0
  76. package/scripts/model-migration-readiness.js +55 -0
  77. package/scripts/native-messaging-audit.js +514 -0
  78. package/scripts/operational-integrity.js +96 -3
  79. package/scripts/otel-declarative-config.js +56 -0
  80. package/scripts/perplexity-client.js +1 -1
  81. package/scripts/post-training-governance.js +34 -0
  82. package/scripts/pr-manager.js +47 -7
  83. package/scripts/private-core-boundary.js +72 -0
  84. package/scripts/production-agent-readiness.js +40 -0
  85. package/scripts/profile-router.js +16 -1
  86. package/scripts/prompt-eval.js +564 -32
  87. package/scripts/prompt-programs.js +93 -0
  88. package/scripts/provider-action-normalizer.js +585 -0
  89. package/scripts/rule-validator.js +285 -0
  90. package/scripts/scaling-law-claims.js +60 -0
  91. package/scripts/security-scanner.js +1 -1
  92. package/scripts/self-distill-agent.js +7 -32
  93. package/scripts/seo-gsd.js +400 -43
  94. package/scripts/skill-rag-router.js +53 -0
  95. package/scripts/spec-gate.js +1 -1
  96. package/scripts/student-consistent-training.js +73 -0
  97. package/scripts/synthetic-data-provenance.js +98 -0
  98. package/scripts/task-context-result.js +81 -0
  99. package/scripts/telemetry-analytics.js +149 -0
  100. package/scripts/thompson-sampling.js +2 -2
  101. package/scripts/token-savings.js +7 -6
  102. package/scripts/token-tco.js +46 -0
  103. package/scripts/tool-registry.js +75 -3
  104. package/scripts/verification-loop.js +10 -1
  105. package/scripts/verifier-scoring.js +71 -0
  106. package/scripts/workflow-sentinel.js +284 -28
  107. package/scripts/workspace-agent-routines.js +118 -0
  108. package/skills/thumbgate/SKILL.md +1 -1
  109. package/src/api/server.js +434 -120
  110. package/.claude-plugin/README.md +0 -170
  111. package/adapters/README.md +0 -12
  112. package/scripts/analytics-report.js +0 -328
  113. package/scripts/autonomous-workflow.js +0 -377
  114. package/scripts/billing-setup.js +0 -109
  115. package/scripts/creator-campaigns.js +0 -239
  116. package/scripts/cross-encoder-reranker.js +0 -235
  117. package/scripts/daemon-manager.js +0 -108
  118. package/scripts/decision-trace.js +0 -354
  119. package/scripts/delegation-runtime.js +0 -896
  120. package/scripts/dispatch-brief.js +0 -159
  121. package/scripts/distribution-surfaces.js +0 -110
  122. package/scripts/feedback-history-distiller.js +0 -382
  123. package/scripts/funnel-analytics.js +0 -35
  124. package/scripts/history-distiller.js +0 -200
  125. package/scripts/hosted-job-launcher.js +0 -256
  126. package/scripts/intent-router.js +0 -392
  127. package/scripts/lesson-reranker.js +0 -263
  128. package/scripts/lesson-retrieval.js +0 -148
  129. package/scripts/managed-lesson-agent.js +0 -183
  130. package/scripts/operational-dashboard.js +0 -103
  131. package/scripts/operational-summary.js +0 -129
  132. package/scripts/operator-artifacts.js +0 -608
  133. package/scripts/optimize-context.js +0 -17
  134. package/scripts/org-dashboard.js +0 -206
  135. package/scripts/partner-orchestration.js +0 -146
  136. package/scripts/predictive-insights.js +0 -356
  137. package/scripts/pulse.js +0 -80
  138. package/scripts/reflector-agent.js +0 -221
  139. package/scripts/sales-pipeline.js +0 -681
  140. package/scripts/session-episode-store.js +0 -329
  141. package/scripts/session-health-sensor.js +0 -242
  142. package/scripts/session-report.js +0 -120
  143. package/scripts/swarm-coordinator.js +0 -81
  144. package/scripts/tool-kpi-tracker.js +0 -12
  145. package/scripts/webhook-delivery.js +0 -62
  146. package/scripts/workflow-sprint-intake.js +0 -475
  147. package/skills/agent-memory/SKILL.md +0 -97
  148. package/skills/solve-architecture-autonomy/SKILL.md +0 -17
  149. package/skills/solve-architecture-autonomy/tool.js +0 -33
  150. package/skills/thumbgate-feedback/SKILL.md +0 -49
package/public/index.html CHANGED
@@ -24,14 +24,14 @@ __GOOGLE_SITE_VERIFICATION_META__
24
24
  <link rel="apple-touch-icon" href="/assets/brand/thumbgate-mark.svg">
25
25
  <meta property="og:image" content="/og.png">
26
26
  <title>ThumbGate — Stop paying for the same AI mistake twice</title>
27
- <meta name="description" content="Stop paying for the same AI mistake twice. ThumbGate turns 👍 thumbs up and 👎 thumbs down feedback into history-aware lessons and Pre-Action Gates that block repeat AI agent mistakes before they reach the model self-improving agent governance with shared lessons and org visibility for Claude Code, Cursor, Codex, Gemini, Amp, and OpenCode.">
27
+ <meta name="description" content="Stop paying for the same AI mistake twice. ThumbGate is the enforcement layer for AI agent orchestration: 👍 thumbs up and 👎 thumbs down become history-aware lessons, shared lessons and org visibility, plus Pre-Action Checks that block repeat mistakes before the next tool call across Claude Code, Cursor, Codex, Gemini, Amp, Cline, and OpenCode.">
28
28
  <meta property="og:title" content="ThumbGate — Stop paying for the same AI mistake twice">
29
- <meta property="og:description" content="Frontier LLMs are expensive and repeat mistakes cost real money. ThumbGate blocks known-bad AI agent actions before they hit the model zero tokens spent on retries, hallucinations, or repeat commands. Fix it once, your bill never sees it again.">
29
+ <meta property="og:description" content="Frontier LLMs are expensive, opaque, and unreliable in production. ThumbGate gates risky agent actions before they run: workflow shape, inspection evidence, token budget, and repeated-failure memory in one pre-action check.">
30
30
  <meta property="og:type" content="website">
31
31
  <meta property="og:image" content="https://thumbgate-production.up.railway.app/og.png">
32
32
  <meta name="twitter:card" content="summary_large_image">
33
33
  <meta name="twitter:image" content="https://thumbgate-production.up.railway.app/og.png">
34
- <meta name="keywords" content="ThumbGate, thumbgate, save LLM tokens, reduce Claude API cost, reduce OpenAI cost, AI agent token savings, prevent LLM retries, prevent hallucination retries, stop AI token waste, pre-action gates, agent governance, Claude Code, Cursor, Codex, Gemini, Amp, OpenCode, workflow hardening, context engineering, AI authenticity, brand authenticity AI">
34
+ <meta name="keywords" content="ThumbGate, thumbgate, AI agent orchestration, AI experience orchestration, agent enforcement layer, save LLM tokens, reduce Claude API cost, reduce OpenAI cost, AI agent token savings, prevent LLM retries, prevent hallucination retries, stop AI token waste, pre-action checks, agent governance, Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode, workflow hardening, context engineering, AI authenticity, brand authenticity AI">
35
35
  <link rel="icon" type="image/png" href="/thumbgate-icon.png">
36
36
  <link rel="apple-touch-icon" href="/apple-touch-icon.png">
37
37
 
@@ -53,7 +53,7 @@ __GA_BOOTSTRAP__
53
53
  "@type": "SoftwareApplication",
54
54
  "name": "ThumbGate",
55
55
  "alternateName": "thumbgate",
56
- "description": "ThumbGate stops you from paying for the same AI mistake twice. Frontier LLMs are expensive and every repeated hallucination, retry loop, or known-bad tool call burns more tokens. ThumbGate's Pre-Action Gates intercept the call before it hits the model, so you spend zero tokens on mistakes you've already corrected once. Works with Claude Code, Cursor, Codex, Gemini, Amp, OpenCode, and any MCP-compatible agent.",
56
+ "description": "ThumbGate stops you from paying for the same AI mistake twice. Frontier LLMs are expensive, opaque, and unreliable in production — every repeated hallucination, retry loop, or known-bad tool call burns more tokens. ThumbGate's Pre-Action Checks inspect workflow shape, environment evidence, budget, and repeated-failure memory before the action runs. Works with Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode, and any MCP-compatible agent.",
57
57
  "applicationCategory": "DeveloperApplication",
58
58
  "operatingSystem": "Cross-platform, Node.js >=18.18.0",
59
59
  "license": "https://opensource.org/licenses/MIT",
@@ -68,10 +68,13 @@ __GA_BOOTSTRAP__
68
68
  },
69
69
  "featureList": [
70
70
  "Prevent expensive AI mistakes — catch bad commands, destructive database actions, unsafe publishes, and risky API calls before execution",
71
- "Make AI stop repeating mistakes — thumbs-down feedback becomes history-aware lessons and Pre-Action Gates",
71
+ "Make AI stop repeating mistakes — thumbs-down feedback becomes history-aware lessons and Pre-Action Checks",
72
72
  "Turn AI into a reliable operator — checkpoint risky actions, enforce safe patterns, and keep proof of what changed",
73
73
  "ThumbGate GPT for ChatGPT — check proposed agent actions, capture thumbs-up/down lessons, and route users into local enforcement",
74
74
  "Workflow Sentinel — score blast radius before PR, merge, release, and publish actions fire",
75
+ "Workflow architecture checks — distinguish predefined workflows, parallel fan-out, and open-ended agents before execution",
76
+ "Environment inspection evidence — require read-before-write, screenshots, API response checks, tests, or output validation for open-ended agent loops",
77
+ "Parallel branch budgets — prevent agent desktops and fan-out workflows from silently multiplying token spend",
75
78
  "Docker Sandboxes routing — move high-risk local runs into isolated microVM-backed execution",
76
79
  "Hosted sandbox dispatch — signed isolated lane for team automations",
77
80
  "Domain Skill Packs — Stripe, Railway, database migration best practices",
@@ -81,10 +84,10 @@ __GA_BOOTSTRAP__
81
84
  "Background Agent Governance — per-agent pass rates, CI auto-feedback",
82
85
  "Memory Migration — imports Claude Code MEMORY.md into unlimited SQLite DB",
83
86
  "Prompt-Level DLP — scans tool call inputs before execution",
84
- "Per-Step Scoring — every gate decision becomes a DPO/KTO training signal",
87
+ "Per-Step Scoring — every check decision becomes a DPO/KTO training signal",
85
88
  "HuggingFace Export — share PII-redacted agent traces as open training datasets",
86
89
  "Unified Context — one-call context assembly with session, lessons, guards, and code-graph",
87
- "AI Authenticity Enforcement — every gate reflects your team's actual standards, not generic AI patterns"
90
+ "AI Authenticity Enforcement — every check reflects your team's actual standards, not generic AI patterns"
88
91
  ],
89
92
  "offers": [
90
93
  {
@@ -92,12 +95,12 @@ __GA_BOOTSTRAP__
92
95
  "name": "Free",
93
96
  "price": "0",
94
97
  "priceCurrency": "USD",
95
- "description": "Free local CLI enforcement for one developer — captures, recalls, gates, and PreToolUse hook blocking after install"
98
+ "description": "Free local CLI enforcement for one developer — captures, recalls, checks, and PreToolUse hook blocking after install"
96
99
  },
97
100
  {
98
101
  "@type": "Offer",
99
102
  "name": "Team",
100
- "price": "99",
103
+ "price": "49",
101
104
  "priceCurrency": "USD",
102
105
  "description": "Intake-led team rollout with a workflow hardening sprint, shared enforcement memory, org dashboard visibility, approval boundaries, release confidence, Docker Sandboxes guidance for risky local autonomy, and pilot support for teams shipping AI-generated changes",
103
106
  "url": "https://thumbgate-production.up.railway.app/#workflow-sprint-intake"
@@ -150,7 +153,7 @@ __GA_BOOTSTRAP__
150
153
  {
151
154
  "@type": "HowToStep",
152
155
  "position": 4,
153
- "name": "Pre-action gates block the mistake",
156
+ "name": "Pre-action checks block the mistake",
154
157
  "text": "When the agent tries to repeat a known-bad action, the PreToolUse hook fires and physically blocks the tool call before execution. The agent cannot repeat the mistake."
155
158
  }
156
159
  ],
@@ -177,7 +180,7 @@ __GA_BOOTSTRAP__
177
180
  "name": "How is ThumbGate different from model-training feedback loops?",
178
181
  "acceptedAnswer": {
179
182
  "@type": "Answer",
180
- "text": "Model-training feedback loops update weights. ThumbGate does not touch the model. It injects past feedback into context so your agent is shaped by your corrections in real time. Think of it as a behavioral immune system, not a training pipeline. The gate blocks are hard enforcement, not soft suggestions."
183
+ "text": "Model-training feedback loops update weights. ThumbGate does not touch the model. It injects past feedback into context so your agent is shaped by your corrections in real time. Think of it as a behavioral immune system, not a training pipeline. The check blocks are hard enforcement, not soft suggestions."
181
184
  }
182
185
  },
183
186
  {
@@ -185,7 +188,7 @@ __GA_BOOTSTRAP__
185
188
  "name": "What is the ThumbGate tech stack?",
186
189
  "acceptedAnswer": {
187
190
  "@type": "Answer",
188
- "text": "SQLite+FTS5 lesson DB, MemAlign-inspired dual recall, Thompson Sampling for adaptive gates, LanceDB vector search with Hugging Face embeddings, ContextFS context assembly, Bayesian belief updates, and PreToolUse hook enforcement."
191
+ "text": "SQLite+FTS5 lesson DB, MemAlign-inspired dual recall, Thompson Sampling for adaptive checks, LanceDB vector search with Hugging Face embeddings, ContextFS context assembly, Bayesian belief updates, and PreToolUse hook enforcement."
189
192
  }
190
193
  },
191
194
  {
@@ -193,7 +196,7 @@ __GA_BOOTSTRAP__
193
196
  "name": "What AI agents does ThumbGate work with?",
194
197
  "acceptedAnswer": {
195
198
  "@type": "Answer",
196
- "text": "Claude Code, Cursor, Codex, Gemini CLI, Amp, OpenCode, and any MCP-compatible agent."
199
+ "text": "Claude Code, Cursor, Codex, Gemini CLI, Amp, Cline, OpenCode, and any MCP-compatible agent."
197
200
  }
198
201
  },
199
202
  {
@@ -204,20 +207,28 @@ __GA_BOOTSTRAP__
204
207
  "text": "No. The ThumbGate GPT is the ChatGPT entrypoint for checking proposed actions, capturing thumbs-up/down lessons, and getting setup help. Use it for advice and checkpointing; hard enforcement still runs locally where the agent executes after npx thumbgate init."
205
208
  }
206
209
  },
210
+ {
211
+ "@type": "Question",
212
+ "name": "Why does the ChatGPT ads rollout matter to ThumbGate?",
213
+ "acceptedAnswer": {
214
+ "@type": "Answer",
215
+ "text": "OpenAI began testing ads in ChatGPT in the US on February 9, 2026, and Digiday reported CPC bidding on April 21, 2026. As conversational AI becomes a monetized discovery surface, teams need a cleaner boundary between AI advice and risky execution. ThumbGate is that pre-action check layer."
216
+ }
217
+ },
207
218
  {
208
219
  "@type": "Question",
209
220
  "name": "How does ThumbGate reduce host blast radius for high-risk local runs?",
210
221
  "acceptedAnswer": {
211
222
  "@type": "Answer",
212
- "text": "ThumbGate combines pre-action gates with execution guidance. Workflow Sentinel predicts risky local actions before they execute, and high-risk runs can be routed into Docker Sandboxes instead of running directly on the host. Team workflows also have a signed hosted sandbox lane for isolated automation dispatch."
223
+ "text": "ThumbGate combines pre-action checks with execution guidance. Workflow Sentinel predicts risky local actions before they execute, and high-risk runs can be routed into Docker Sandboxes instead of running directly on the host. Team workflows also have a signed hosted sandbox lane for isolated automation dispatch."
213
224
  }
214
225
  },
215
226
  {
216
227
  "@type": "Question",
217
- "name": "How are pre-action gates different from prompt rules?",
228
+ "name": "How are pre-action checks different from prompt rules?",
218
229
  "acceptedAnswer": {
219
230
  "@type": "Answer",
220
- "text": "Prompt rules are suggestions agents can ignore. Pre-Action Gates are enforcement — they block the action before execution via PreToolUse hooks. Gates are auto-generated from feedback and use Thompson Sampling to adapt."
231
+ "text": "Prompt rules are suggestions agents can ignore. Pre-Action Checks are enforcement — they block the action before execution via PreToolUse hooks. Checks are auto-generated from feedback and use Thompson Sampling to adapt."
221
232
  }
222
233
  },
223
234
  {
@@ -225,7 +236,7 @@ __GA_BOOTSTRAP__
225
236
  "name": "How does ThumbGate prevent AI slop and protect brand authenticity?",
226
237
  "acceptedAnswer": {
227
238
  "@type": "Answer",
228
- "text": "AI slop happens when agents act without human judgment as a hard gate — generating repetitive, generic outputs that erode trust and dilute your brand. ThumbGate inserts human thumbs-up/down between AI intent and execution. Every thumbs-down becomes a prevention rule that blocks the bad pattern permanently. Every thumbs-up reinforces what 'good' looks like for your specific context. Your agent's outputs reflect your actual standards, not generic AI patterns. This is authenticity enforcement at the tool-call level."
239
+ "text": "AI slop happens when agents act without human judgment as a hard check — generating repetitive, generic outputs that erode trust and dilute your brand. ThumbGate inserts human thumbs-up/down between AI intent and execution. Every thumbs-down becomes a prevention rule that blocks the bad pattern permanently. Every thumbs-up reinforces what 'good' looks like for your specific context. Your agent's outputs reflect your actual standards, not generic AI patterns. This is authenticity enforcement at the tool-call level."
229
240
  }
230
241
  },
231
242
  {
@@ -314,17 +325,17 @@ __GA_BOOTSTRAP__
314
325
  .hero-install .cmd { color: var(--cyan); }
315
326
  .hero-install .copy-hint { font-size: 11px; color: var(--text-muted); font-family: var(--font); margin-left: 8px; }
316
327
  .hero-install .copied { color: var(--green); }
317
- .first-gate-card { max-width: 820px; margin: 0 auto 28px; text-align: left; border: 1px solid rgba(34,211,238,0.28); background: linear-gradient(135deg, rgba(34,211,238,0.08) 0%, rgba(74,222,128,0.06) 100%); border-radius: 14px; padding: 22px; box-shadow: 0 18px 60px rgba(0,0,0,0.22); }
318
- .first-gate-card h2 { font-size: clamp(22px, 3vw, 30px); line-height: 1.15; margin-bottom: 8px; letter-spacing: -0.025em; }
319
- .first-gate-card p { max-width: none; margin: 0 0 16px; color: var(--text-muted); font-size: 15px; }
320
- .first-gate-steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 16px; }
321
- .first-gate-step { border: 1px solid var(--border); border-radius: 10px; background: rgba(10,10,11,0.62); padding: 14px; }
322
- .first-gate-step strong { display: block; color: var(--cyan); margin-bottom: 6px; }
323
- .first-gate-step p { font-size: 13px; line-height: 1.5; margin: 0; }
324
- .first-gate-examples { display: grid; gap: 8px; margin-top: 12px; }
325
- .first-gate-example { font-family: var(--mono); border-radius: 8px; padding: 10px 12px; font-size: 12px; overflow-x: auto; line-height: 1.55; }
326
- .first-gate-example.signal-good { color: var(--green); background: rgba(74,222,128,0.08); border: 1px solid rgba(74,222,128,0.24); }
327
- .first-gate-example.signal-fix { color: #fda4af; background: rgba(251,113,133,0.08); border: 1px solid rgba(251,113,133,0.24); }
328
+ .first-check-card { max-width: 820px; margin: 0 auto 28px; text-align: left; border: 1px solid rgba(34,211,238,0.28); background: linear-gradient(135deg, rgba(34,211,238,0.08) 0%, rgba(74,222,128,0.06) 100%); border-radius: 14px; padding: 22px; box-shadow: 0 18px 60px rgba(0,0,0,0.22); }
329
+ .first-check-card h2 { font-size: clamp(22px, 3vw, 30px); line-height: 1.15; margin-bottom: 8px; letter-spacing: -0.025em; }
330
+ .first-check-card p { max-width: none; margin: 0 0 16px; color: var(--text-muted); font-size: 15px; }
331
+ .first-check-steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 16px; }
332
+ .first-check-step { border: 1px solid var(--border); border-radius: 10px; background: rgba(10,10,11,0.62); padding: 14px; }
333
+ .first-check-step strong { display: block; color: var(--cyan); margin-bottom: 6px; }
334
+ .first-check-step p { font-size: 13px; line-height: 1.5; margin: 0; }
335
+ .first-check-examples { display: grid; gap: 8px; margin-top: 12px; }
336
+ .first-check-example { font-family: var(--mono); border-radius: 8px; padding: 10px 12px; font-size: 12px; overflow-x: auto; line-height: 1.55; }
337
+ .first-check-example.signal-good { color: var(--green); background: rgba(74,222,128,0.08); border: 1px solid rgba(74,222,128,0.24); }
338
+ .first-check-example.signal-fix { color: #fda4af; background: rgba(251,113,133,0.08); border: 1px solid rgba(251,113,133,0.24); }
328
339
 
329
340
  /* SOCIAL PROOF BAR */
330
341
  .proof-bar { display: flex; justify-content: center; flex-wrap: wrap; gap: 10px; font-size: 13px; color: var(--text-muted); padding: 4px 0 12px; max-width: 1040px; margin: 0 auto; }
@@ -505,7 +516,7 @@ __GA_BOOTSTRAP__
505
516
  @media (max-width: 700px) {
506
517
  .steps { grid-template-columns: 1fr; }
507
518
  .compatibility-grid { grid-template-columns: 1fr; }
508
- .first-gate-steps { grid-template-columns: 1fr; }
519
+ .first-check-steps { grid-template-columns: 1fr; }
509
520
  .gpt-steps { grid-template-columns: 1fr; }
510
521
  .seo-grid { grid-template-columns: 1fr; }
511
522
  .autoresearch-grid { grid-template-columns: 1fr; }
@@ -563,7 +574,8 @@ __GA_BOOTSTRAP__
563
574
  <div class="hero-thumbs">👍👎</div>
564
575
  <div class="hero-badge">● Your AI coding bill has a leak</div>
565
576
  <h1>Stop paying $ for the same AI mistake.</h1>
566
- <p style="font-size:18px;color:var(--text-muted);max-width:720px;margin:0 auto 20px;line-height:1.6;">Every retry loop, every hallucinated import, every "let me try a different approach" — those are billable tokens on every LLM vendor's bill. Thumbs-down once; ThumbGate blocks that exact mistake on every future call. Across Claude Code, Cursor, Codex, Gemini, Amp, OpenCode — any MCP-compatible agent, forever, including fast-moving vibe coding workflows.</p>
577
+ <p style="font-size:18px;color:var(--text-muted);max-width:720px;margin:0 auto 20px;line-height:1.6;">Every retry loop, every hallucinated import, every "let me try a different approach" — those are billable tokens on every LLM vendor's bill. Thumbs-down once; ThumbGate blocks that exact mistake on every future call. Across Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode — any MCP-compatible agent, forever, including fast-moving vibe coding workflows.</p>
578
+ <p style="font-size:15px;color:var(--text-dim);max-width:760px;margin:0 auto 24px;line-height:1.6;">As desktop agents move into parallel sessions, terminals, and production workflows, ThumbGate checks the thing benchmarks miss: is this next action a known workflow, an open-ended agent, a costly fan-out, or a blind tool call with no way to verify it worked?</p>
567
579
 
568
580
  <!-- HERO PRICING CARD — visible in first viewport so $19/mo and $149/yr never get buried -->
569
581
  <div id="pro-pitch" style="max-width:820px;margin:0 auto 32px;padding:24px 28px;background:linear-gradient(180deg,rgba(17,17,19,0.94) 0%,rgba(22,22,24,0.94) 100%);border:1px solid rgba(34,211,238,0.32);border-radius:20px;box-shadow:0 0 0 1px rgba(34,211,238,0.18),0 24px 64px rgba(0,0,0,0.35);text-align:left;">
@@ -601,9 +613,9 @@ __GA_BOOTSTRAP__
601
613
  <div style="font-size:13px;color:var(--text-muted);margin-bottom:4px;">💸 Tokens saved — since install (Sonnet-blended, conservative)</div>
602
614
  <div id="hero-savings-counter" data-target="1247.82" style="font-size:44px;font-weight:700;color:#4ade80;letter-spacing:-0.02em;line-height:1;margin-bottom:18px;">$0.00</div>
603
615
  <div style="font-size:12px;line-height:1.8;border-top:1px solid rgba(255,255,255,0.06);padding-top:12px;">
604
- <div style="color:#4ade80;">✅ gate:no-force-push — blocked 12×</div>
605
- <div style="color:#4ade80;">✅ gate:no-hallucinated-import — blocked 8×</div>
606
- <div style="color:#f87171;">❌ gate:no-drop-prod — FIRED · saved ~$3.40</div>
616
+ <div style="color:#4ade80;">✅ check:no-force-push — blocked 12×</div>
617
+ <div style="color:#4ade80;">✅ check:no-hallucinated-import — blocked 8×</div>
618
+ <div style="color:#f87171;">❌ check:no-drop-prod — FIRED · saved ~$3.40</div>
607
619
  <div style="color:var(--text-muted);font-size:11px;margin-top:8px;">Sample shown. Your own dashboard tracks live feedback log + blocked calls from day one. <span style="color:var(--cyan);">Open dashboard →</span></div>
608
620
  </div>
609
621
  </a>
@@ -619,7 +631,7 @@ __GA_BOOTSTRAP__
619
631
  })();
620
632
  </script>
621
633
  <div class="hero-signals">
622
- <a class="signal-pill signal-down" href="#how-it-works" title="See how gate interception works">Block repeat hallucinations before the model sees them</a>
634
+ <a class="signal-pill signal-down" href="#how-it-works" title="See how check interception works">Block repeat hallucinations before the model sees them</a>
623
635
  <a class="signal-pill signal-up" href="#how-it-works" title="See the one-thumbs-down enforcement loop">Thumbs-down once, blocked forever, across every agent</a>
624
636
  <a class="signal-pill" href="#install" title="Install the CLI">CLI-first workflow governance with a live tokens-saved counter</a>
625
637
  </div>
@@ -646,34 +658,34 @@ __GA_BOOTSTRAP__
646
658
  <span style="display:inline-flex;align-items:center;gap:4px;">🛡️ Local-first — no cloud required</span>
647
659
  <span style="display:inline-flex;align-items:center;gap:4px;">🔌 6 agent integrations</span>
648
660
  </div>
649
- <p style="font-size:13px;color:var(--text-muted);margin:16px auto 0;max-width:660px;">No, you do not have to chat inside the GPT forever. The GPT is advice and checkpointing; local hooks do the hard blocking for Claude Code, Cursor, Codex, Gemini, Amp, OpenCode, and MCP-compatible agents.</p>
661
+ <p style="font-size:13px;color:var(--text-muted);margin:16px auto 0;max-width:660px;">No, you do not have to chat inside the GPT forever. The GPT is advice and checkpointing; local hooks do the hard blocking for Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode, and MCP-compatible agents.</p>
650
662
  <div id="demo" style="margin:28px auto 0;max-width:560px;text-align:center;" onclick="posthog.capture('hero_demo_view')">
651
663
  <div style="font-size:13px;color:var(--text-muted);margin-bottom:8px;letter-spacing:0.04em;text-transform:uppercase;">▶ 90-second demo · force-push → 👎 → blocked</div>
652
664
  <video src="/assets/tiktok-agent-memory.mp4" controls playsinline preload="metadata" poster="/assets/instagram-card.png" style="width:100%;max-width:560px;border-radius:12px;border:1px solid var(--border);background:#000;box-shadow:0 10px 40px rgba(0,0,0,0.4);"></video>
653
665
  <a href="/checkout/pro?utm_source=website&utm_medium=hero_demo&utm_campaign=pro_trial&cta_id=hero_post_demo" onclick="posthog.capture('hero_cta_click',{cta:'start_trial_post_demo'})" style="display:inline-block;margin-top:14px;color:var(--cyan);font-size:14px;font-weight:700;text-decoration:none;">→ Start 7-day Pro trial</a>
654
666
  </div>
655
667
  <p style="font-size:13px;color:var(--text-muted);margin:8px auto 28px;max-width:560px;">Your agent has no memory. Every session, the same wrong pattern runs. ThumbGate turns a single correction into a permanent block — before the next tool call fires. <a href="#pricing" style="color:var(--cyan);text-decoration:none;">See all plans →</a></p>
656
- <div class="first-gate-card" id="first-gate">
668
+ <div class="first-check-card" id="first-check">
657
669
  <div class="section-label" style="text-align:left;margin-bottom:8px;">First-Dollar Activation Path</div>
658
670
  <h2>Block your first repeated AI mistake in 5 minutes.</h2>
659
- <p>Prove one blocked repeat before asking anyone to buy. The fastest path to value: one person, one repeated mistake, one gate that blocks it permanently.</p>
660
- <div class="first-gate-steps">
661
- <div class="first-gate-step">
671
+ <p>Prove one blocked repeat before asking anyone to buy. The fastest path to value: one person, one repeated mistake, one check that blocks it permanently.</p>
672
+ <div class="first-check-steps">
673
+ <div class="first-check-step">
662
674
  <strong>1. Install ThumbGate</strong>
663
675
  <p>Run <code>npx thumbgate init</code> in your repo. Or install the <a href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-claude-desktop.mcpb" style="color:var(--cyan);">Claude Extension</a>, <a href="/codex-plugin" style="color:var(--cyan);">Codex plugin</a>, <a href="https://github.com/IgorGanapolsky/ThumbGate/tree/main/plugins/cursor-marketplace" style="color:var(--cyan);">Cursor plugin</a>, or <a href="/go/gpt" style="color:var(--cyan);">open the GPT</a>. Native ChatGPT rating buttons are not the ThumbGate capture path.</p>
664
676
  </div>
665
- <div class="first-gate-step">
677
+ <div class="first-check-step">
666
678
  <strong>2. Give feedback</strong>
667
679
  <p>Give <code>thumbs up</code> when the agent follows your standards, or <code>thumbs down</code> when it misses. ThumbGate captures the context and distills a lesson from up to 8 prior entries.</p>
668
680
  </div>
669
- <div class="first-gate-step">
670
- <strong>3. The gate blocks the repeat</strong>
681
+ <div class="first-check-step">
682
+ <strong>3. The check blocks the repeat</strong>
671
683
  <p>Next time the agent tries the same mistake, the PreToolUse hook fires and physically blocks it. Upgrade after one real blocked repeat when you need the dashboard and exports.</p>
672
684
  </div>
673
685
  </div>
674
- <div class="first-gate-examples" aria-label="ThumbGate feedback examples">
675
- <div class="first-gate-example signal-good">thumbs up: this review named exact files, commands, and tests; repeat this evidence-first format.</div>
676
- <div class="first-gate-example signal-fix">thumbs down: the answer ignored my request for exact files and tests; next time include file paths, commands, and verification evidence.</div>
686
+ <div class="first-check-examples" aria-label="ThumbGate feedback examples">
687
+ <div class="first-check-example signal-good">thumbs up: this review named exact files, commands, and tests; repeat this evidence-first format.</div>
688
+ <div class="first-check-example signal-fix">thumbs down: the answer ignored my request for exact files and tests; next time include file paths, commands, and verification evidence.</div>
677
689
  </div>
678
690
  </div>
679
691
  <nav class="proof-bar" aria-label="ThumbGate install and proof links">
@@ -688,7 +700,7 @@ __GA_BOOTSTRAP__
688
700
  <a href="https://github.com/IgorGanapolsky/ThumbGate/actions" target="_blank" rel="noopener">CI and proof lanes →</a>
689
701
  <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/RELEASE_CONFIDENCE.md" target="_blank" rel="noopener">Release confidence →</a>
690
702
  <a href="https://www.producthunt.com/products/thumbgate" target="_blank" rel="noopener">Product Hunt →</a>
691
- <a href="#compatibility">Claude Code · Cursor · Codex · Gemini · Amp · OpenCode</a>
703
+ <a href="#compatibility">Claude Code · Cursor · Codex · Gemini · Amp · Cline · OpenCode</a>
692
704
  </nav>
693
705
  </div>
694
706
  </section>
@@ -708,13 +720,13 @@ __GA_BOOTSTRAP__
708
720
  <div><span class="fn">npx</span> thumbgate init</div>
709
721
  <div>&nbsp;</div>
710
722
  <div><span class="comment"># Your agent tries to delete production db...</span></div>
711
- <div><span class="keyword">⛔ Gate blocked:</span> <span class="string">"Never run DROP on production tables"</span></div>
723
+ <div><span class="keyword">⛔ Check blocked:</span> <span class="string">"Never run DROP on production tables"</span></div>
712
724
  <div><span class="comment"># Rule auto-generated from your previous 👎</span></div>
713
725
  <div>&nbsp;</div>
714
- <div><span class="comment"># That's it. One thumbs-down = one permanent gate.</span></div>
726
+ <div><span class="comment"># That's it. One thumbs-down = one permanent check.</span></div>
715
727
  </div>
716
728
  </div>
717
- <p style="text-align:center;margin-top:16px;font-size:14px;color:var(--text-muted);">This is the entire product in 2 lines. Install, give feedback, gates auto-generate.</p>
729
+ <p style="text-align:center;margin-top:16px;font-size:14px;color:var(--text-muted);">This is the entire product in 2 lines. Install, give feedback, checks auto-generate.</p>
718
730
  </div>
719
731
  </section>
720
732
 
@@ -753,7 +765,7 @@ __GA_BOOTSTRAP__
753
765
  <p>Download the <a href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-claude-desktop.mcpb" style="color:#d97706;font-weight:600;">.mcpb bundle</a> for Claude Desktop, or use the repo marketplace: <code>/plugin marketplace add IgorGanapolsky/ThumbGate</code></p>
754
766
  </div>
755
767
  <div class="gpt-step">
756
- <strong>3. Give feedback, gates auto-generate</strong>
768
+ <strong>3. Give feedback, checks auto-generate</strong>
757
769
  <p>Type <code>thumbs down</code> when Claude makes a mistake. ThumbGate distills a lesson from up to 8 prior entries and blocks the pattern permanently via PreToolUse hooks.</p>
758
770
  </div>
759
771
  </div>
@@ -762,7 +774,7 @@ __GA_BOOTSTRAP__
762
774
  <a href="/guide.html" class="btn-free" style="display:inline-flex;align-items:center;padding:12px 20px;border-radius:8px;">Claude Desktop setup guide</a>
763
775
  <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/.claude-plugin/README.md" class="btn-free" target="_blank" rel="noopener" style="display:inline-flex;align-items:center;padding:12px 20px;border-radius:8px;">Claude plugin docs</a>
764
776
  </div>
765
- <p class="gpt-note"><strong>Claude Code Skill:</strong> Type <code>/thumbgate</code> in any Claude Code session. Auto-triggers on “gate”, “feedback”, “block mistake”. Free skill on top of the same local gateway.</p>
777
+ <p class="gpt-note"><strong>Claude Code Skill:</strong> Type <code>/thumbgate</code> in any Claude Code session. Auto-triggers on “check”, “feedback”, “block mistake”. Free skill on top of the same local gateway.</p>
766
778
  </div>
767
779
  </div>
768
780
  </section>
@@ -772,8 +784,8 @@ __GA_BOOTSTRAP__
772
784
  <div class="container">
773
785
  <div class="gpt-panel">
774
786
  <div class="section-label" style="text-align:left;">ChatGPT Entry Point · Live ThumbGate GPT for ChatGPT</div>
775
- <h2>Open the GPT. Give typed thumbs feedback. Turn the lesson into a gate.</h2>
776
- <p>ThumbGate should meet users where they already ask AI for help. The live GPT is the lowest-friction way to capture a useful thumbs-up/down lesson, check a risky action, and prove the enforcement loop before installing anything.</p>
787
+ <h2>Open the GPT. Give typed thumbs feedback. Turn the lesson into a check.</h2>
788
+ <p>ThumbGate should meet users where they already ask AI for help. The live GPT is the lowest-friction way to capture a useful thumbs-up/down lesson, check a risky action, and prove the enforcement loop before installing anything. As ChatGPT ads roll out, this matters more: ChatGPT can stay the discovery and checkpointing layer, while ThumbGate remains the hard execution boundary after <code>npx thumbgate init</code>.</p>
777
789
  <div class="gpt-steps">
778
790
  <div class="gpt-step">
779
791
  <strong>1. Try the live GPT</strong>
@@ -785,12 +797,13 @@ __GA_BOOTSTRAP__
785
797
  </div>
786
798
  <div class="gpt-step">
787
799
  <strong>3. Enforce locally</strong>
788
- <p>Run <code>npx thumbgate init</code> in the repo so Pre-Action Gates block repeated mistakes before the coding agent executes them.</p>
800
+ <p>Run <code>npx thumbgate init</code> in the repo so Pre-Action Checks block repeated mistakes before the coding agent executes them.</p>
789
801
  </div>
790
802
  </div>
791
803
  <div style="display:flex;gap:12px;flex-wrap:wrap;">
792
804
  <a href="/go/gpt?utm_source=website&utm_medium=gpt_section&utm_campaign=chatgpt_gpt&cta_id=gpt_path_open_gpt&cta_placement=gpt_section" class="btn-gpt-page" target="_blank" rel="noopener" onclick="posthog.capture('gpt_path_cta_click',{cta:'open_gpt'})">Open ThumbGate GPT</a>
793
805
  <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/adapters/chatgpt/INSTALL.md" class="btn-free" target="_blank" rel="noopener" style="display:inline-flex;align-items:center;padding:12px 20px;border-radius:8px;">ChatGPT Actions setup</a>
806
+ <a href="/guides/chatgpt-ads-trust" class="btn-free" style="display:inline-flex;align-items:center;padding:12px 20px;border-radius:8px;">Why ChatGPT ads need checks</a>
794
807
  </div>
795
808
  <p class="gpt-note"><strong>Plain English rule:</strong> ChatGPT is the discovery and memory surface for advice, checkpointing, and typed feedback capture. One typed signal becomes one remembered rule. The hard Reliability Gateway still runs in the local agent or CI lane.</p>
796
809
  </div>
@@ -809,14 +822,19 @@ __GA_BOOTSTRAP__
809
822
  </a>
810
823
  <a class="compat-card seo-card" href="/guides/claude-code-prevent-repeated-mistakes.html" rel="noopener">
811
824
  <h3>⚡ Claude Code Skill</h3>
812
- <p>Type <code>/thumbgate</code> in any Claude Code session. Auto-triggers on "gate", "feedback", "block mistake". Free skill on top of the same local gateway teams later harden into a shared workflow.</p>
825
+ <p>Type <code>/thumbgate</code> in any Claude Code session. Auto-triggers on "check", "feedback", "block mistake". Free skill on top of the same local gateway teams later harden into a shared workflow.</p>
813
826
  <div class="card-arrow">Read the Claude Code guide →</div>
814
827
  </a>
815
828
  <a class="compat-card" href="/guide.html" rel="noopener">
816
829
  <h3>🤖 AI CLIs</h3>
817
- <p>Claude Code, Codex, Gemini CLI, Amp, and OpenCode all use the same gateway and memory model. Any MCP-compatible agent gets pre-action gates, feedback memory, and enforcement out of the box.</p>
830
+ <p>Claude Code, Codex, Gemini CLI, Amp, and OpenCode all use the same gateway and memory model. Any MCP-compatible agent gets pre-action checks, feedback memory, and enforcement out of the box.</p>
818
831
  <div class="card-arrow">Open the setup guide →</div>
819
832
  </a>
833
+ <a class="compat-card seo-card" href="/guides/gcp-mcp-guardrails" rel="noopener">
834
+ <h3>☁️ Google Data Agent Kit</h3>
835
+ <p>Cloud Next 2026 shipped BigQuery, Spanner, AlloyDB, and Cloud SQL as MCP tool calls into Claude Code, Codex, and Gemini CLI. ThumbGate checks the destructive ones — DROP on prod datasets, unscoped DELETEs, IAM escalation — before they fire.</p>
836
+ <div class="card-arrow">Read the GCP guardrails guide →</div>
837
+ </a>
820
838
  <a class="compat-card" href="/codex-plugin?utm_source=website&utm_medium=compatibility&utm_campaign=codex_plugin&cta_id=compat_codex_plugin&cta_placement=compatibility" rel="noopener" onclick="if(typeof posthog!=='undefined')posthog.capture('compat_codex_plugin_click',{cta:'open_codex_plugin_page'})">
821
839
  <h3>🧩 Codex plugin</h3>
822
840
  <p>Codex gets a standalone ThumbGate plugin bundle, a repo-local plugin profile, and the same auto-updating MCP launcher. The runtime resolves <code>thumbgate@latest</code> when Codex starts, so npm fixes reach active installs. The install page includes the zip, MCP config, and verification path in one place.</p>
@@ -824,7 +842,7 @@ __GA_BOOTSTRAP__
824
842
  </a>
825
843
  <a class="compat-card" href="/guides/cursor-prevent-repeated-mistakes.html" rel="noopener">
826
844
  <h3>🎯 Cursor plugin</h3>
827
- <p>Drop the ThumbGate MCP config into <code>.cursor/mcp.json</code> and Cursor gets the same pre-action gates as Claude Code and Codex. Ships with bundled rules, commands, hooks, and agents.</p>
845
+ <p>Drop the ThumbGate MCP config into <code>.cursor/mcp.json</code> and Cursor gets the same pre-action checks as Claude Code and Codex. Ships with bundled rules, commands, hooks, and agents.</p>
828
846
  <div class="card-arrow">Read the Cursor guide →</div>
829
847
  </a>
830
848
  <a class="compat-card" href="/guide.html" rel="noopener">
@@ -834,7 +852,7 @@ __GA_BOOTSTRAP__
834
852
  </a>
835
853
  <a class="compat-card" href="https://mcp.so/server/thumbgate" target="_blank" rel="noopener" onclick="if(typeof posthog!=='undefined')posthog.capture('compat_mcp_so_click',{cta:'view_mcp_directory'})">
836
854
  <h3>🗂️ MCP Server Directory</h3>
837
- <p>ThumbGate is listed on <code>mcp.so</code> so MCP-compatible clients can verify the package, copy the npx config, and confirm they are installing the real Pre-Action Gates server.</p>
855
+ <p>ThumbGate is listed on <code>mcp.so</code> so MCP-compatible clients can verify the package, copy the npx config, and confirm they are installing the real Pre-Action Checks server.</p>
838
856
  <div class="card-arrow">View on mcp.so →</div>
839
857
  </a>
840
858
  <a class="compat-card" href="/go/gpt?utm_source=website&utm_medium=compatibility&utm_campaign=chatgpt_gpt&cta_id=compat_open_gpt&cta_placement=compatibility" target="_blank" rel="noopener">
@@ -853,16 +871,16 @@ __GA_BOOTSTRAP__
853
871
  <div class="agent-grid">
854
872
  <div class="agent-card">
855
873
  <h3>🔍 Live Dashboard Demo</h3>
856
- <p>Search lessons, inspect gates, mark a review checkpoint, and see only what changed since the last pass. No signup or install required.</p>
874
+ <p>Search lessons, inspect checks, mark a review checkpoint, and see only what changed since the last pass. No signup or install required.</p>
857
875
  <a href="/dashboard" style="display:inline-block;margin-top:12px;color:var(--cyan);font-weight:600;text-decoration:underline;">Open Dashboard Demo →</a>
858
876
  </div>
859
877
  <div class="agent-card">
860
- <h3>⛔ Gate Reasoning Chains</h3>
878
+ <h3>⛔ Check Reasoning Chains</h3>
861
879
  <p>Every block explains why: which pattern matched, what evidence triggered it, and whether the rule came from your own corrections.</p>
862
880
  </div>
863
881
  <div class="agent-card">
864
882
  <h3>📊 Org Dashboard (Team)</h3>
865
- <p>See which agents are creating review churn, which gates are saving time, and where rollout risk is still concentrated across the shared workflow.</p>
883
+ <p>See which agents are creating review churn, which checks are saving time, and where rollout risk is still concentrated across the shared workflow.</p>
866
884
  </div>
867
885
  <div class="agent-card">
868
886
  <h3>🧱 Isolated Execution Lanes</h3>
@@ -880,15 +898,60 @@ __GA_BOOTSTRAP__
880
898
  </div>
881
899
  </section>
882
900
 
901
+ <section class="compatibility" id="orchestration-layer">
902
+ <div class="container">
903
+ <div class="section-label">Positioning</div>
904
+ <h2 class="section-title">Enforcement is the missing layer in AI orchestration.</h2>
905
+ <p style="color:var(--text-dim);max-width:760px;margin:0 auto 20px;">Big orchestration suites unify data, routes, and decisions. ThumbGate sits closer to the moment of execution: the point where an agent is about to run a shell command, ship a PR, approve a release, or repeat a mistake you already corrected. That is where workflow trust is won or lost.</p>
906
+ <div class="agent-grid">
907
+ <div class="agent-card">
908
+ <h3>Broad orchestration platforms</h3>
909
+ <p>Good at customer journeys, routing, and cross-system context. Weak when you need a coding agent or automation to stop before a destructive or low-trust action actually runs.</p>
910
+ </div>
911
+ <div class="agent-card">
912
+ <h3>ThumbGate</h3>
913
+ <p>Turns operator feedback into Pre-Action Checks. It does not just remember the mistake. It blocks the repeat at the tool-call boundary across Claude Code, Cursor, Codex, Gemini, Amp, Cline, and OpenCode.</p>
914
+ </div>
915
+ <div class="agent-card">
916
+ <h3>The stack that makes sense</h3>
917
+ <p>Use orchestration to decide what should happen next. Use ThumbGate to decide what is allowed to execute. That is the control layer enterprises actually need once agents touch repos, terminals, CI, or production workflows.</p>
918
+ </div>
919
+ </div>
920
+ <div style="display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:18px;">
921
+ <a class="btn-team" href="/compare/ai-experience-orchestration">Compare orchestration vs enforcement →</a>
922
+ <a class="btn-free" href="/use-cases/platform-teams" style="display:inline-flex;align-items:center;">Platform team rollout →</a>
923
+ <a class="btn-free" href="/use-cases/regulated-workflows" style="display:inline-flex;align-items:center;">Regulated workflow pattern →</a>
924
+ </div>
925
+ </div>
926
+ </section>
927
+
883
928
  <section class="seo-pages" id="compare-guides">
884
929
  <div class="container">
885
930
  <div class="section-label">Popular Buyer Questions</div>
886
931
  <h2 class="section-title">How buyers discover ThumbGate in search and AI answers</h2>
887
932
  <div class="seo-grid">
933
+ <a class="seo-card" href="/compare/ai-experience-orchestration">
934
+ <div class="seo-kicker">Comparison</div>
935
+ <h3>AI Orchestration vs Enforcement</h3>
936
+ <p>Why IBM and Adobe-style orchestration still needs a stop layer once AI agents can touch code, approvals, or production workflows.</p>
937
+ <div class="card-arrow">See where ThumbGate fits →</div>
938
+ </a>
939
+ <a class="seo-card" href="/use-cases/platform-teams">
940
+ <div class="seo-kicker">Use Case</div>
941
+ <h3>ThumbGate for Platform Teams</h3>
942
+ <p>Standardize agent behavior across Claude Code, Codex, Cursor, Gemini, and CI without turning your rollout into an internal services project.</p>
943
+ <div class="card-arrow">Read the rollout pattern →</div>
944
+ </a>
945
+ <a class="seo-card" href="/use-cases/regulated-workflows">
946
+ <div class="seo-kicker">Use Case</div>
947
+ <h3>ThumbGate for Regulated Workflows</h3>
948
+ <p>Keep approval boundaries, evidence, and audit context attached to the exact moment an agent wants to act in finance, healthcare, and other high-trust environments.</p>
949
+ <div class="card-arrow">Read the governance pattern →</div>
950
+ </a>
888
951
  <a class="seo-card" href="/compare/speclock">
889
952
  <div class="seo-kicker">Comparison</div>
890
953
  <h3>ThumbGate vs SpecLock</h3>
891
- <p>Why thumbs-up/down feedback and pre-action gates solve repeated mistakes faster than a manual spec-authoring loop.</p>
954
+ <p>Why thumbs-up/down feedback and pre-action checks solve repeated mistakes faster than a manual spec-authoring loop.</p>
892
955
  <div class="card-arrow">Read the comparison →</div>
893
956
  </a>
894
957
  <a class="seo-card" href="/compare/mem0">
@@ -897,22 +960,64 @@ __GA_BOOTSTRAP__
897
960
  <p>Mem0 remembers context. ThumbGate enforces behavior. Why retrieval alone is not enough when your agent keeps repeating the same mistakes.</p>
898
961
  <div class="card-arrow">See the enforcement angle →</div>
899
962
  </a>
900
- <a class="seo-card" href="/guides/pre-action-gates">
963
+ <a class="seo-card" href="/guides/pre-action-checks">
901
964
  <div class="seo-kicker">Guide</div>
902
- <h3>What Are Pre-Action Gates?</h3>
965
+ <h3>What Are Pre-Action Checks?</h3>
903
966
  <p>The core concept explained in plain language: how thumbs up, thumbs down, and runtime enforcement work together to prevent repeated failures.</p>
904
967
  <div class="card-arrow">Read the guide →</div>
905
968
  </a>
969
+ <a class="seo-card" href="/guides/agent-harness-optimization">
970
+ <div class="seo-kicker">Harness</div>
971
+ <h3>AI Agent Harness Optimization</h3>
972
+ <p>Keep global prompts lean, load MCP schemas on demand, and turn harness lessons into Pre-Action Checks that block repeat failures.</p>
973
+ <div class="card-arrow">Audit your harness →</div>
974
+ </a>
975
+ <a class="seo-card" href="/guides/ai-search-topical-presence">
976
+ <div class="seo-kicker">AI Search</div>
977
+ <h3>AI Search Topical Presence</h3>
978
+ <p>Why AI tools recommend the brands they repeatedly see tied to a buyer problem, and how ThumbGate builds that association with proof-backed pages.</p>
979
+ <div class="card-arrow">Strengthen the association →</div>
980
+ </a>
981
+ <a class="seo-card" href="/guides/best-tools-stop-ai-agents-breaking-production">
982
+ <div class="seo-kicker">AEO Listicle</div>
983
+ <h3>Best Tools to Stop AI Agents From Breaking Production</h3>
984
+ <p>A long-tail answer-engine page for buyers asking how to gate Claude Code, Cursor, Codex, and parallel coding agents before risky execution.</p>
985
+ <div class="card-arrow">Own the buyer prompt →</div>
986
+ </a>
987
+ <a class="seo-card" href="/guides/chatgpt-ads-trust">
988
+ <div class="seo-kicker">ChatGPT Ads</div>
989
+ <h3>ChatGPT Ads Need Pre-Action Checks</h3>
990
+ <p>As conversational AI becomes an ad surface, trust, measurement, and execution boundaries matter more. This page ties that shift directly to ThumbGate.</p>
991
+ <div class="card-arrow">Own the trust angle →</div>
992
+ </a>
993
+ <a class="seo-card" href="/guides/relational-knowledge-ai-recommendations">
994
+ <div class="seo-kicker">Recommendation</div>
995
+ <h3>Relational Knowledge in AI Recommendations</h3>
996
+ <p>How LLMs store brand-to-problem associations, and why ThumbGate should own the “pre-action checks for AI coding agents” slot.</p>
997
+ <div class="card-arrow">See why brands get picked →</div>
998
+ </a>
999
+ <a class="seo-card" href="/guides/browser-automation-safety">
1000
+ <div class="seo-kicker">Browser Safety</div>
1001
+ <h3>Browser Automation Safety for AI Agents</h3>
1002
+ <p>See how prompt injection, cross-app bridges, and silent connector installs turn browser-use into a governance problem, then audit what is already wired on disk.</p>
1003
+ <div class="card-arrow">Read the browser safety guide →</div>
1004
+ </a>
1005
+ <a class="seo-card" href="/guides/native-messaging-host-security">
1006
+ <div class="seo-kicker">Native Messaging</div>
1007
+ <h3>Native Messaging Host Security</h3>
1008
+ <p>Audit local browser bridges, missing host binaries, and pre-authorized extension paths before a desktop agent turns a one-off experiment into a durable integration.</p>
1009
+ <div class="card-arrow">Run the bridge audit →</div>
1010
+ </a>
906
1011
  <a class="seo-card" href="/guides/claude-code-feedback">
907
1012
  <div class="seo-kicker">Integration</div>
908
1013
  <h3>Claude Code Feedback Memory That Enforces</h3>
909
- <p>Why structured feedback memory matters more when it becomes a live gate that blocks your agent from repeating mistakes.</p>
1014
+ <p>Why structured feedback memory matters more when it becomes a live check that blocks your agent from repeating mistakes.</p>
910
1015
  <div class="card-arrow">Read the integration guide →</div>
911
1016
  </a>
912
1017
  <a class="seo-card" href="/guides/stop-repeated-ai-agent-mistakes">
913
1018
  <div class="seo-kicker">Problem Guide</div>
914
1019
  <h3>How to Stop AI Agents From Repeating Mistakes</h3>
915
- <p>The shortest path from “I already corrected this once” to a pre-action gate that blocks the repeat before the next tool call lands.</p>
1020
+ <p>The shortest path from “I already corrected this once” to a pre-action check that blocks the repeat before the next tool call lands.</p>
916
1021
  <div class="card-arrow">See the fix →</div>
917
1022
  </a>
918
1023
  <a class="seo-card" href="/guides/cursor-agent-guardrails">
@@ -930,13 +1035,13 @@ __GA_BOOTSTRAP__
930
1035
  <a class="seo-card" href="/guides/gemini-cli-feedback-memory">
931
1036
  <div class="seo-kicker">Gemini</div>
932
1037
  <h3>Gemini CLI Memory That Leads to Enforcement</h3>
933
- <p>Why Gemini CLI buyers start with memory and convert when they see how memory becomes real pre-action gates.</p>
1038
+ <p>Why Gemini CLI buyers start with memory and convert when they see how memory becomes real pre-action checks.</p>
934
1039
  <div class="card-arrow">Read the Gemini guide →</div>
935
1040
  </a>
936
1041
  <a class="seo-card" href="/guides/autoresearch-agent-safety">
937
1042
  <div class="seo-kicker">Autoresearch</div>
938
1043
  <h3>Autoresearch Safety for Self-Improving Agents</h3>
939
- <p>Why benchmark-search loops need gates for holdout tests, proof trails, reward hacking, and unsafe promotions.</p>
1044
+ <p>Why benchmark-search loops need checks for holdout tests, proof trails, reward hacking, and unsafe promotions.</p>
940
1045
  <div class="card-arrow">Read the Autoresearch guide →</div>
941
1046
  </a>
942
1047
  </div>
@@ -948,7 +1053,7 @@ __GA_BOOTSTRAP__
948
1053
  <div class="autoresearch-panel">
949
1054
  <div class="section-label" style="text-align:left;">Autoresearch Safety Pack</div>
950
1055
  <h2>Stop self-improving coding loops from hacking the benchmark.</h2>
951
- <p>Autoresearch loops run experiments, inspect metrics, and accept better variants. ThumbGate gives those loops a Reliability Gateway: Pre-Action Gates for skipped holdout tests, fake proof, reward hacking, unsafe edits, and promotion without verification evidence.</p>
1056
+ <p>Autoresearch loops run experiments, inspect metrics, and accept better variants. ThumbGate gives those loops a Reliability Gateway: Pre-Action Checks for skipped holdout tests, fake proof, reward hacking, unsafe edits, and promotion without verification evidence.</p>
952
1057
  <div class="autoresearch-grid">
953
1058
  <div class="autoresearch-card">
954
1059
  <h3>Guard the metric</h3>
@@ -960,7 +1065,7 @@ __GA_BOOTSTRAP__
960
1065
  </div>
961
1066
  <div class="autoresearch-card">
962
1067
  <h3>Ship into CI</h3>
963
- <p>Start with templates for <code>npm test</code>, Playwright duration, bundle size, lint, and CI failures, then add Team gates for shared workflows.</p>
1068
+ <p>Start with templates for <code>npm test</code>, Playwright duration, bundle size, lint, and CI failures, then add Team checks for shared workflows.</p>
964
1069
  </div>
965
1070
  </div>
966
1071
  <div class="autoresearch-cta">
@@ -974,13 +1079,13 @@ __GA_BOOTSTRAP__
974
1079
  <!-- HOW IT WORKS -->
975
1080
  <section class="how-it-works" id="how-it-works">
976
1081
  <div class="container">
977
- <div class="section-label">New in v1.14.1</div>
1082
+ <div class="section-label">New in v1.16.0</div>
978
1083
  <h2 class="section-title">Three steps to stop repeated AI failures</h2>
979
1084
  <div class="steps">
980
1085
  <div class="step">
981
1086
  <div class="step-num">1</div>
982
1087
  <h3>Feedback</h3>
983
- <p>Give <code>👍</code> or <code>👎</code> on your AI agent's actions. Feedback is stored in a SQLite+FTS5 lesson DB. In the current Claude auto-capture hook, a vague thumbs-down can distill from up to 8 prior recorded entries and the failed tool call before promotion, then stay linked to a 60-second feedback session. Example: you 👎 a risky migration → it auto-promotes to a "never run DROP on prod" gate.</p>
1088
+ <p>Give <code>👍</code> or <code>👎</code> on your AI agent's actions. Feedback is stored in a SQLite+FTS5 lesson DB. In the current Claude auto-capture hook, a vague thumbs-down can distill from up to 8 prior recorded entries and the failed tool call before promotion, then stay linked to a 60-second feedback session. Example: you 👎 a risky migration → it auto-promotes to a "never run DROP on prod" check.</p>
984
1089
  </div>
985
1090
  <div class="step">
986
1091
  <div class="step-num">2</div>
@@ -989,8 +1094,8 @@ __GA_BOOTSTRAP__
989
1094
  </div>
990
1095
  <div class="step">
991
1096
  <div class="step-num">3</div>
992
- <h3>Gates</h3>
993
- <p>Rules become Pre-Action Gates that <strong>block</strong> your agent before it repeats the same mistake. Your agent can't force-push, skip tests, or repeat a refactor you already rejected. No more fix-loops.</p>
1097
+ <h3>Checks</h3>
1098
+ <p>Rules become Pre-Action Checks that <strong>block</strong> your agent before it repeats the same mistake. Your agent can't force-push, skip tests, or repeat a refactor you already rejected. No more fix-loops.</p>
994
1099
  </div>
995
1100
  </div>
996
1101
  </div>
@@ -1001,7 +1106,7 @@ __GA_BOOTSTRAP__
1001
1106
  <section class="compatibility" id="guardrails">
1002
1107
  <div class="container">
1003
1108
  <div class="section-label">Enforcement</div>
1004
- <h2 class="section-title">Gates block. They don't ask nicely.</h2>
1109
+ <h2 class="section-title">Checks block. They don't ask nicely.</h2>
1005
1110
  <div class="agent-grid">
1006
1111
  <div class="agent-card">
1007
1112
  <h3>Don't trust — verify</h3>
@@ -1009,15 +1114,15 @@ __GA_BOOTSTRAP__
1009
1114
  </div>
1010
1115
  <div class="agent-card">
1011
1116
  <h3>Real tools, not wishes</h3>
1012
- <p>Gates physically block tool calls. Not prompt tricks. Not "please don't."</p>
1117
+ <p>Checks physically block tool calls. Not prompt tricks. Not "please don't."</p>
1013
1118
  </div>
1014
1119
  <div class="agent-card">
1015
1120
  <h3>Force models to show work</h3>
1016
- <p>Reasoning chains on every gate decision. Thompson Sampling confidence tiers.</p>
1121
+ <p>Reasoning chains on every check decision. Thompson Sampling confidence tiers.</p>
1017
1122
  </div>
1018
1123
  <div class="agent-card">
1019
1124
  <h3>Log everything, learn automatically</h3>
1020
- <p>Repeated failures auto-promote to gates. Org dashboard shows all agents.</p>
1125
+ <p>Repeated failures auto-promote to checks. Org dashboard shows all agents.</p>
1021
1126
  </div>
1022
1127
  <div class="agent-card">
1023
1128
  <h3>Keep risky runs off the host</h3>
@@ -1046,7 +1151,7 @@ __GA_BOOTSTRAP__
1046
1151
  <div><span class="fn">npx</span> thumbgate init</div>
1047
1152
  <div>&nbsp;</div>
1048
1153
  <div><span class="comment"># Your agent tries to delete production db...</span></div>
1049
- <div><span class="keyword">⛔ Gate blocked:</span> <span class="string">"Never run DROP on production tables"</span></div>
1154
+ <div><span class="keyword">⛔ Check blocked:</span> <span class="string">"Never run DROP on production tables"</span></div>
1050
1155
  <div><span class="comment"># Rule auto-generated from your previous 👎</span></div>
1051
1156
  <div>&nbsp;</div>
1052
1157
  <div><span class="comment"># Works with your existing setup</span></div>
@@ -1130,7 +1235,7 @@ __GA_BOOTSTRAP__
1130
1235
  <li>No recall or lesson search</li>
1131
1236
  <li>No exports (DPO, Databricks, HuggingFace)</li>
1132
1237
  <li>All MCP integrations (Claude Code, Cursor, Codex, Gemini, Amp, any MCP agent)</li>
1133
- <li>PreToolUse hook blocking with built-in safety gates (force-push, destructive SQL, secrets)</li>
1238
+ <li>PreToolUse hook blocking with built-in safety checks (force-push, destructive SQL, secrets)</li>
1134
1239
  <li><a href="/guide" style="color:var(--cyan);text-decoration:underline;">Setup guide for all agents →</a></li>
1135
1240
  </ul>
1136
1241
  <div class="hero-install" onclick="copyInstall(this)" title="Click to copy" style="margin-bottom:12px;width:100%;justify-content:center;">
@@ -1152,16 +1257,16 @@ __GA_BOOTSTRAP__
1152
1257
  <div style="background:linear-gradient(135deg,#1a1a2e 0%,#16213e 100%);padding:16px;text-align:center;">
1153
1258
  <div style="font-size:11px;color:var(--cyan);text-transform:uppercase;letter-spacing:1px;margin-bottom:8px;">What your Pro dashboard looks like</div>
1154
1259
  <div style="background:#0d0d1a;border-radius:6px;padding:12px;text-align:left;font-family:monospace;font-size:11px;line-height:1.6;">
1155
- <div style="color:#4ade80;">✅ gate:no-force-push — blocked 12 times</div>
1156
- <div style="color:#4ade80;">✅ gate:require-tests — blocked 8 times</div>
1157
- <div style="color:#f87171;">❌ gate:no-drop-prod — FIRED (blocked DROP TABLE)</div>
1260
+ <div style="color:#4ade80;">✅ check:no-force-push — blocked 12 times</div>
1261
+ <div style="color:#4ade80;">✅ check:require-tests — blocked 8 times</div>
1262
+ <div style="color:#f87171;">❌ check:no-drop-prod — FIRED (blocked DROP TABLE)</div>
1158
1263
  <div style="color:#888;margin-top:6px;">DPO pairs exported: 47 | Lessons: 23 active</div>
1159
1264
  </div>
1160
1265
  </div>
1161
1266
  </div>
1162
1267
  <ul>
1163
1268
  <li>Everything in Free, plus:</li>
1164
- <li><a href="/dashboard#insights" style="color:var(--cyan);text-decoration:underline;">Visual gate debugger →</a> see every blocked action and the gate that fired so you can trust the system in minutes</li>
1269
+ <li><a href="/dashboard#insights" style="color:var(--cyan);text-decoration:underline;">Visual check debugger →</a> see every blocked action and the check that fired so you can trust the system in minutes</li>
1165
1270
  <li>Auto-connect — activate once with your license key, then your running agents appear automatically on your local dashboard</li>
1166
1271
  <li><a href="/dashboard#export" style="color:var(--cyan);text-decoration:underline;">DPO training data export →</a> turn real thumbs-downs into ready-to-use preference pairs for fine-tuning (LoRA / JSONL)</li>
1167
1272
  <li><strong>HuggingFace dataset export</strong> — share PII-redacted agent traces as open training datasets (<code>npm run export:hf</code>)</li>
@@ -1183,15 +1288,15 @@ __GA_BOOTSTRAP__
1183
1288
  <div class="price-sub">3-seat minimum · One engineer's correction protects the whole team</div>
1184
1289
  <p style="font-size:13px;color:var(--green);margin-bottom:16px;font-weight:500;">When one engineer teaches the agent not to delete staging data, that lesson applies to every agent on the team. Stop paying the same mistake tax across different developers.</p>
1185
1290
  <div class="pro-upgrade-triggers" style="font-size:12px;color:#aaa;margin-bottom:12px;">
1186
- <strong style="color:#fff;">Previously $99/seat.</strong> Now $49/seat. Start with one repo, one workflow, one repeat failure.
1291
+ Start with one repo, one workflow, one repeat failure at $49/seat.
1187
1292
  </div>
1188
1293
  <ul>
1189
1294
  <li>Workflow hardening sprint — map one painful workflow, one repeated failure, and one buyer proof review before wider rollout</li>
1190
1295
  <li>Shared enforcement memory — a shared lesson database where one developer's 👎 on a bad migration protects every agent on the team</li>
1191
1296
  <li>Team lesson export/import — export lessons from one project, import into another. Deduplication, provenance tracking, and <code>team-import</code> tagging built in. One team's hard-won lessons become every team's prevention rules</li>
1192
- <li>Org dashboard — active agents, gate hit rates, risk agents, and proof-backed team metrics in one place</li>
1297
+ <li>Org dashboard — active agents, check hit rates, risk agents, and proof-backed team metrics in one place</li>
1193
1298
  <li>Hosted review views — constrained cards, lists, and callouts for rollout, incident, and audit visibility</li>
1194
- <li>Gate template library — pre-built guardrails for force-pushes, skipped tests, destructive SQL, and evidence-before-done</li>
1299
+ <li>Check template library — pre-built guardrails for force-pushes, skipped tests, destructive SQL, and evidence-before-done</li>
1195
1300
  <li>Docker Sandboxes guidance — route risky local autonomy into an isolated microVM-backed lane instead of running it directly on a shared host</li>
1196
1301
  <li>Signed hosted sandbox dispatch — isolated execution path for team automations that do not need repo-bound local access</li>
1197
1302
  <li>Release confidence story — Changesets, SemVer, version sync, and verification evidence keep publishes and rollout claims inspectable</li>
@@ -1242,20 +1347,24 @@ __GA_BOOTSTRAP__
1242
1347
  </div>
1243
1348
  <div class="faq-item">
1244
1349
  <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">How is ThumbGate different from model-training feedback loops?</div>
1245
- <div class="faq-a">ThumbGate's intelligence is context, not weights. It doesn't touch the model — it injects past feedback into context so your agent is conditioned by your corrections. Think of it as a behavioral immune system, not a training pipeline. The gate blocks are hard enforcement, not soft suggestions.</div>
1350
+ <div class="faq-a">ThumbGate's intelligence is context, not weights. It doesn't touch the model — it injects past feedback into context so your agent is conditioned by your corrections. Think of it as a behavioral immune system, not a training pipeline. The check blocks are hard enforcement, not soft suggestions.</div>
1246
1351
  </div>
1247
1352
  <div class="faq-item">
1248
1353
  <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">What's the tech stack?</div>
1249
- <div class="faq-a">SQLite+FTS5 lesson DB for fast full-text search. MemAlign-inspired dual recall (principle-based rules + episodic context). Thompson Sampling for adaptive gate sensitivity per failure domain. LanceDB + Apache Arrow for local vector search with Hugging Face embeddings. ContextFS for context assembly. Bayesian belief updates on each memory. PreToolUse hook enforcement blocks known-bad actions before execution. All local-first — no cloud required.</div>
1354
+ <div class="faq-a">SQLite+FTS5 lesson DB for fast full-text search. MemAlign-inspired dual recall (principle-based rules + episodic context). Thompson Sampling for adaptive check sensitivity per failure domain. LanceDB + Apache Arrow for local vector search with Hugging Face embeddings. ContextFS for context assembly. Bayesian belief updates on each memory. PreToolUse hook enforcement blocks known-bad actions before execution. All local-first — no cloud required.</div>
1250
1355
  </div>
1251
1356
  <div class="faq-item">
1252
1357
  <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">What AI agents and editors does this work with?</div>
1253
- <div class="faq-a">ThumbGate works with Claude Code, Cursor, Codex, Gemini CLI, Amp, OpenCode, and any other MCP-compatible agent. Cursor ships with a plugin bundle in this repo. Codex now ships both a standalone plugin bundle and a repo-local app plugin profile, and the published download is linked directly from this page. VS Code works when you run an MCP-compatible agent inside it, but this repo does not ship a standalone VS Code extension today.</div>
1358
+ <div class="faq-a">ThumbGate works with Claude Code, Cursor, Codex, Gemini CLI, Amp, Cline, OpenCode, and any other MCP-compatible agent. Cursor ships with a plugin bundle in this repo. Codex now ships both a standalone plugin bundle and a repo-local app plugin profile, and the published download is linked directly from this page. VS Code works when you run an MCP-compatible agent inside it, but this repo does not ship a standalone VS Code extension today.</div>
1254
1359
  </div>
1255
1360
  <div class="faq-item">
1256
1361
  <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">Do I have to chat inside the ThumbGate GPT for enforcement?</div>
1257
1362
  <div class="faq-a">No. The ThumbGate GPT is the ChatGPT entrypoint for checking proposed actions, capturing thumbs-up/down lessons, and getting setup help. Use it for advice and checkpointing; hard enforcement still runs locally where the agent executes after <code>npx thumbgate init</code>.</div>
1258
1363
  </div>
1364
+ <div class="faq-item">
1365
+ <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">Why does the ChatGPT ads rollout matter to ThumbGate?</div>
1366
+ <div class="faq-a">OpenAI began testing ads in ChatGPT in the US on February 9, 2026, and Digiday reported CPC bidding on April 21, 2026. That makes trust and measurement more important around AI-assisted decisions. ThumbGate gives teams a hard boundary between conversational discovery and risky local execution, so a suggested action still has to pass a real check before it runs. <a href="/guides/chatgpt-ads-trust" style="color:var(--cyan);text-decoration:underline;">Read the full positioning guide</a>.</div>
1367
+ </div>
1259
1368
  <div class="faq-item">
1260
1369
  <button class="faq-q" type="button" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">How do we keep high-risk autonomous runs off the host?</button>
1261
1370
  <div class="faq-a">ThumbGate is the control plane, not just a prompt layer. Workflow Sentinel predicts blast radius before execution, and risky local autonomy can be routed into Docker Sandboxes instead of running directly on the host. Team workflows also have a signed hosted sandbox lane for isolated dispatch when local repo access is not required.</div>
@@ -1266,15 +1375,15 @@ __GA_BOOTSTRAP__
1266
1375
  </div>
1267
1376
  <div class="faq-item">
1268
1377
  <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">Do I need a cloud account?</div>
1269
- <div class="faq-a">No. Free keeps local enforcement on your machine with 3 daily feedback captures, 5 lesson searches, unlimited recall, gates, and hook blocking. No cloud account is required. The business starts when a team wants shared rules, approval boundaries, hosted review views, org dashboard visibility, and proof that survives handoffs. Pro is the optional solo side lane for a personal dashboard, DPO export, and team lesson export/import — share lessons across projects so one team's mistakes become every team's prevention rules.</div>
1378
+ <div class="faq-a">No. Free keeps local enforcement on your machine with 3 daily feedback captures, 5 lesson searches, unlimited recall, checks, and hook blocking. No cloud account is required. The business starts when a team wants shared rules, approval boundaries, hosted review views, org dashboard visibility, and proof that survives handoffs. Pro is the optional solo side lane for a personal dashboard, DPO export, and team lesson export/import — share lessons across projects so one team's mistakes become every team's prevention rules.</div>
1270
1379
  </div>
1271
1380
  <div class="faq-item">
1272
1381
  <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">What if my thumbs-down is vague?</div>
1273
1382
  <div class="faq-a">For the current Claude auto-capture hook, ThumbGate can reuse up to 8 prior recorded entries and the failed tool call for a vague thumbs-down, then keep a linked 60-second feedback session open for later clarification. The timer resets when more context arrives, so the lesson stays attached to one feedback record instead of fragmenting into duplicates.</div>
1274
1383
  </div>
1275
1384
  <div class="faq-item">
1276
- <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">How are pre-action gates different from prompt rules?</div>
1277
- <div class="faq-a">Prompt rules are a starting point, not a finish line. Without prompt evaluation you do not know whether they still hold up under real tool use. ThumbGate adds the human-in-the-loop measurement loop and the enforcement layer: proof lanes, ThumbGate Bench, and self-heal checks show whether behavior improved, and Pre-Action Gates block the action before execution when it did not.</div>
1385
+ <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">How are pre-action checks different from prompt rules?</div>
1386
+ <div class="faq-a">Prompt rules are a starting point, not a finish line. Without prompt evaluation you do not know whether they still hold up under real tool use. ThumbGate adds the human-in-the-loop measurement loop and the enforcement layer: proof lanes, ThumbGate Bench, and self-heal checks show whether behavior improved, and Pre-Action Checks block the action before execution when it did not.</div>
1278
1387
  </div>
1279
1388
  <div class="faq-item">
1280
1389
  <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">What does Pro cost?</div>
@@ -1288,8 +1397,8 @@ __GA_BOOTSTRAP__
1288
1397
  <section class="compatibility" id="newsletter" style="padding: 48px 0;">
1289
1398
  <div class="container" style="text-align: center;">
1290
1399
  <div class="section-label">Stay Updated</div>
1291
- <h2 class="section-title" style="margin-bottom: 16px;">Get notified when we ship new gates and integrations.</h2>
1292
- <p style="color: var(--text-dim); margin-bottom: 24px; max-width: 560px; margin-left: auto; margin-right: auto;">Join the mailing list for new gate patterns, agent integration updates, and product news. If you later choose Pro, we keep checkout prefilled on this device.</p>
1400
+ <h2 class="section-title" style="margin-bottom: 16px;">Get notified when we ship new checks and integrations.</h2>
1401
+ <p style="color: var(--text-dim); margin-bottom: 24px; max-width: 560px; margin-left: auto; margin-right: auto;">Join the mailing list for new check patterns, agent integration updates, and product news. If you later choose Pro, we keep checkout prefilled on this device.</p>
1293
1402
  <form action="/api/newsletter" method="POST" data-newsletter-form data-page="homepage" data-intent="buyer_follow_up" style="display: flex; gap: 8px; max-width: 480px; margin: 0 auto; flex-wrap: wrap; justify-content: center;">
1294
1403
  <input type="email" name="email" data-buyer-email placeholder="you@company.com" required style="flex: 1; min-width: 220px; padding: 12px 16px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg-raised); color: var(--text); font-size: 15px;">
1295
1404
  <button type="submit" style="padding: 12px 24px; background: var(--cyan); color: #000; border: none; border-radius: 8px; font-weight: 600; font-size: 15px; cursor: pointer;">Get sprint brief + updates</button>
@@ -1302,7 +1411,7 @@ __GA_BOOTSTRAP__
1302
1411
  <section class="final-cta">
1303
1412
  <div class="container">
1304
1413
  <h2>Stop the same mistake before it runs again.</h2>
1305
- <p>Install free. No credit card. No signup. Hit your first gate in 60 seconds.</p>
1414
+ <p>Install free. No credit card. No signup. Hit your first check in 60 seconds.</p>
1306
1415
  <div style="display:flex;gap:12px;justify-content:center;flex-wrap:wrap;align-items:center;">
1307
1416
  <div class="hero-install" onclick="copyInstall(this)" title="Click to copy" style="margin-bottom:0;font-size:16px;padding:14px 24px;border:2px solid var(--cyan);">
1308
1417
  <span class="prompt">$</span>
@@ -1330,7 +1439,7 @@ __GA_BOOTSTRAP__
1330
1439
  <a href="https://www.linkedin.com/in/igorganapolsky" target="_blank" rel="noopener">LinkedIn</a>
1331
1440
  <a href="/blog">Blog</a>
1332
1441
  </div>
1333
- <span class="footer-copy">© 2026 Max Smith KDP LLC · MIT License · v1.14.1</span>
1442
+ <span class="footer-copy">© 2026 Max Smith KDP LLC · MIT License · v1.16.0</span>
1334
1443
  </div>
1335
1444
  </footer>
1336
1445
 
@@ -1445,6 +1554,7 @@ function copyInstall(el) {
1445
1554
 
1446
1555
  /* ── Plausible custom event tracking ── */
1447
1556
  (function() {
1557
+
1448
1558
  function trackClick(selector, eventName, props) {
1449
1559
  document.querySelectorAll(selector).forEach(function(el) {
1450
1560
  el.addEventListener('click', function() {
@@ -1528,6 +1638,29 @@ function copyInstall(el) {
1528
1638
 
1529
1639
  /* SEO/comparison page clicks */
1530
1640
  trackClick('.seo-card', 'seo_page_click');
1641
+
1642
+ globalThis.buyerJourney = globalThis.ThumbGateBuyerIntent.initializeBehaviorAnalytics({
1643
+ pageType: 'marketing',
1644
+ pagePath: '/',
1645
+ landingPath: '/',
1646
+ sendTelemetry: sendFirstPartyTelemetry,
1647
+ emailSelector: '#pro-email',
1648
+ sections: [
1649
+ { selector: '.hero', sectionId: 'hero', sectionLabel: 'Hero' },
1650
+ { selector: '.proof-bar', sectionId: 'proof_bar', sectionLabel: 'Proof Bar' },
1651
+ { selector: '#how-it-works', sectionId: 'how_it_works', sectionLabel: 'How It Works' },
1652
+ { selector: '#pricing', sectionId: 'pricing', sectionLabel: 'Pricing' },
1653
+ { selector: '#workflow-sprint-intake', sectionId: 'workflow_sprint_intake', sectionLabel: 'Workflow Sprint Intake' },
1654
+ { selector: '#faq', sectionId: 'faq', sectionLabel: 'FAQ' }
1655
+ ],
1656
+ ctaImpressions: [
1657
+ { selector: '#pro-checkout-link', ctaId: 'pricing_pro_trial', ctaPlacement: 'pricing', planId: 'pro' },
1658
+ { selector: '.price-card.pro .btn-pro', ctaId: 'pricing_pro_monthly', ctaPlacement: 'pricing', planId: 'pro' },
1659
+ { selector: '.hero-actions .btn-pro-page', ctaId: 'hero_go_pro', ctaPlacement: 'hero', planId: 'pro' },
1660
+ { selector: '.sticky-cta .btn-pro', ctaId: 'sticky_go_pro', ctaPlacement: 'sticky_cta', planId: 'pro' },
1661
+ { selector: '.price-card.team .btn-team', ctaId: 'team_workflow_sprint', ctaPlacement: 'pricing', planId: 'team' }
1662
+ ]
1663
+ });
1531
1664
  })();
1532
1665
  </script>
1533
1666
  <script>
@@ -1547,6 +1680,9 @@ async function handleProTrial() {
1547
1680
  buyerIntent.storeBuyerEmail(normalizedEmail);
1548
1681
  buyerIntent.hydrateBuyerEmailInputs(normalizedEmail);
1549
1682
  buyerIntent.applyBuyerEmailToCheckoutLinks(normalizedEmail);
1683
+ if (globalThis.buyerJourney && typeof globalThis.buyerJourney.markEmailCaptured === 'function') {
1684
+ globalThis.buyerJourney.markEmailCaptured();
1685
+ }
1550
1686
  var checkoutLink = document.getElementById('pro-checkout-link');
1551
1687
  var checkoutUrl = checkoutLink ? checkoutLink.href : '/checkout/pro';
1552
1688
  if (typeof plausible === 'function') {