thumbgate 1.27.11 → 1.27.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) 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/builtin-lessons.json +23 -0
  12. package/config/gate-templates.json +0 -228
  13. package/config/gates/claim-verification.json +0 -18
  14. package/package.json +35 -25
  15. package/public/assets/brand/thumbgate-logo-transparent.svg +22 -0
  16. package/public/assets/brand/thumbgate-mark-inline-v3.svg +19 -0
  17. package/public/assets/brand/thumbgate-mark.svg +11 -5
  18. package/public/blog.html +0 -30
  19. package/public/brand/thumbgate-mark.svg +9 -5
  20. package/public/chatgpt-app.html +2 -2
  21. package/public/compare.html +2 -1
  22. package/public/dashboard.html +1 -1
  23. package/public/federal.html +1 -1
  24. package/public/index.html +95 -216
  25. package/public/learn.html +59 -35
  26. package/public/lessons.html +1 -1
  27. package/public/numbers.html +2 -2
  28. package/public/pro.html +7 -7
  29. package/scripts/aws-blocks-guardrails.js +228 -0
  30. package/scripts/cli-schema.js +22 -10
  31. package/scripts/dashboard-chat.js +2 -1
  32. package/scripts/document-intake.js +1 -49
  33. package/scripts/durability/step.js +3 -3
  34. package/scripts/gate-stats.js +5 -11
  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/llm-client.js +187 -5
  39. package/scripts/plausible-domain-config.js +3 -1
  40. package/scripts/seo-gsd.js +240 -1
  41. package/scripts/tool-registry.js +2 -2
  42. package/scripts/vector-store.js +44 -0
  43. package/scripts/workspace-evolver.js +62 -2
  44. package/src/api/server.js +340 -131
  45. package/public/assets/brand/thumbgate-mark-inline.svg +0 -15
  46. package/public/compare/adopt-ai.html +0 -219
  47. package/public/compare/agentix-labs.html +0 -197
  48. package/public/compare/ai-experience-orchestration.html +0 -216
  49. package/public/compare/anthropic-claude-for-legal.html +0 -260
  50. package/public/compare/anthropic-containment.html +0 -280
  51. package/public/compare/arcade.html +0 -175
  52. package/public/compare/arcjet.html +0 -239
  53. package/public/compare/bumblebee.html +0 -307
  54. package/public/compare/claude-code-hooks.html +0 -294
  55. package/public/compare/databricks-unity-ai-gateway.html +0 -215
  56. package/public/compare/fallow.html +0 -351
  57. package/public/compare/heidi.html +0 -233
  58. package/public/compare/mem0.html +0 -342
  59. package/public/compare/oak-and-sparrow-gatekeeper.html +0 -289
  60. package/public/compare/rein.html +0 -236
  61. package/public/compare/sigmashake.html +0 -256
  62. package/public/compare/speclock.html +0 -342
  63. package/public/guides/agent-harness-optimization.html +0 -342
  64. package/public/guides/agentic-web-governance.html +0 -406
  65. package/public/guides/ai-agent-governance-sprint.html +0 -415
  66. package/public/guides/ai-agent-pre-action-approval-gates.html +0 -401
  67. package/public/guides/ai-agent-workflow-migration-checklist.html +0 -392
  68. package/public/guides/ai-deployment-readiness.html +0 -415
  69. package/public/guides/ai-mode-ads-agent-governance.html +0 -401
  70. package/public/guides/ai-search-topical-presence.html +0 -342
  71. package/public/guides/autoresearch-agent-safety.html +0 -342
  72. package/public/guides/background-agent-governance.html +0 -358
  73. package/public/guides/best-tools-stop-ai-agents-breaking-production.html +0 -363
  74. package/public/guides/browser-automation-safety.html +0 -342
  75. package/public/guides/chatgpt-ads-trust.html +0 -353
  76. package/public/guides/claude-code-feedback.html +0 -339
  77. package/public/guides/claude-code-prevent-repeated-mistakes.html +0 -161
  78. package/public/guides/claude-code-skills-guardrails.html +0 -343
  79. package/public/guides/claude-desktop.html +0 -356
  80. package/public/guides/code-knowledge-graph-guardrails.html +0 -365
  81. package/public/guides/codex-cli-guardrails.html +0 -339
  82. package/public/guides/cursor-agent-guardrails.html +0 -339
  83. package/public/guides/cursor-prevent-repeated-mistakes.html +0 -161
  84. package/public/guides/database-agent-safety.html +0 -406
  85. package/public/guides/deepseek-v4-runtime-guardrails.html +0 -346
  86. package/public/guides/developer-machine-supply-chain-guardrails.html +0 -358
  87. package/public/guides/gcp-mcp-guardrails.html +0 -147
  88. package/public/guides/gemini-cli-feedback-memory.html +0 -339
  89. package/public/guides/gpt-5-5-model-evaluation.html +0 -358
  90. package/public/guides/internal-ai-engineering-stack-guardrails.html +0 -348
  91. package/public/guides/long-running-agent-context-management.html +0 -346
  92. package/public/guides/mcp-tool-governance.html +0 -401
  93. package/public/guides/multica-thumbgate-setup.html +0 -134
  94. package/public/guides/native-messaging-host-security.html +0 -342
  95. package/public/guides/policy-engine-pre-action-gates.html +0 -346
  96. package/public/guides/pre-action-checks.html +0 -342
  97. package/public/guides/pretooluse-hooks-vs-advisory-prompt-rules.html +0 -342
  98. package/public/guides/prompt-tricks-to-workflow-rules.html +0 -365
  99. package/public/guides/proxy-pointer-rag-guardrails.html +0 -352
  100. package/public/guides/rag-precision-tuning-guardrails.html +0 -352
  101. package/public/guides/reasoning-compression-guardrails.html +0 -346
  102. package/public/guides/relational-knowledge-ai-recommendations.html +0 -342
  103. package/public/guides/roo-code-alternative-cline.html +0 -339
  104. package/public/guides/semantic-programmatic-seo-guardrails.html +0 -352
  105. package/public/guides/seo-agent-skills-guardrails.html +0 -344
  106. package/public/guides/stop-repeated-ai-agent-mistakes.html +0 -342
  107. package/public/learn/ac-dc-runtime-enforcement.html +0 -277
  108. package/public/learn/agent-harness-pattern.html +0 -181
  109. package/public/learn/agent-identity-connector-governance.html +0 -146
  110. package/public/learn/agent-swarms-shared-gates.html +0 -173
  111. package/public/learn/agentic-enterprise-context-brain.html +0 -117
  112. package/public/learn/agentic-os-team-governance.html +0 -146
  113. package/public/learn/ai-agent-governance.html +0 -158
  114. package/public/learn/ai-agent-persistent-memory.html +0 -211
  115. package/public/learn/anthropomorphic-claim-gates.html +0 -180
  116. package/public/learn/background-agent-control-layer.html +0 -184
  117. package/public/learn/claude-code-goal-with-rubrics.html +0 -205
  118. package/public/learn/codex-role-plugins-need-governance.html +0 -125
  119. package/public/learn/cost-aware-agent-gate-routing.html +0 -173
  120. package/public/learn/databricks-unity-ai-gateway-runtime-governance.html +0 -157
  121. package/public/learn/deterministic-agent-workflows.html +0 -185
  122. package/public/learn/feedback-loop-vs-decision-layer.html +0 -283
  123. package/public/learn/from-prototype-to-production.html +0 -223
  124. package/public/learn/learn.css +0 -51
  125. package/public/learn/mcp-pre-action-checks-explained.html +0 -172
  126. package/public/learn/pretix-stripe-connect-marketplaces.html +0 -161
  127. package/public/learn/regulated-agent-execution-boundary.html +0 -196
  128. package/public/learn/spec-driven-development.html +0 -168
  129. package/public/learn/stop-ai-agent-force-push.html +0 -134
  130. package/public/learn/vibe-coding-safety-net.html +0 -142
  131. package/scripts/reddit-browser-notification-watch.js +0 -230
@@ -1,157 +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>Databricks Unity AI Gateway validates runtime AI governance - ThumbGate</title>
7
- <script defer data-domain="thumbgate.ai" src="https://plausible.io/js/script.js"></script>
8
- <meta name="description" content="Databricks Unity AI Gateway makes runtime AI governance mainstream. The next layer is local pre-action enforcement before developer agents call shell, browser, API, MCP, file, or deploy tools.">
9
- <meta name="keywords" content="Databricks Unity AI Gateway, AI governance, MCP governance, AI gateway, pre-action enforcement, PreToolUse, ThumbGate">
10
- <meta property="og:title" content="Databricks validates runtime AI governance">
11
- <meta property="og:description" content="Enterprise gateways govern the fleet. Local pre-action gates stop the agent action before it fires.">
12
- <meta property="og:type" content="article">
13
- <meta property="og:url" content="https://thumbgate.ai/learn/databricks-unity-ai-gateway-runtime-governance">
14
- <link rel="canonical" href="https://thumbgate.ai/learn/databricks-unity-ai-gateway-runtime-governance">
15
- <link rel="stylesheet" href="/learn/learn.css">
16
- <script type="application/ld+json">
17
- {
18
- "@context": "https://schema.org",
19
- "@type": "TechArticle",
20
- "headline": "Databricks Unity AI Gateway validates runtime AI governance",
21
- "description": "Databricks Unity AI Gateway makes runtime governance for models, agents, MCP services, tools, guardrails, observability, and AI cost controls mainstream. ThumbGate positions as the local pre-action enforcement layer for developer-agent workflows.",
22
- "author": {
23
- "@type": "Person",
24
- "name": "Igor Ganapolsky",
25
- "url": "https://github.com/IgorGanapolsky"
26
- },
27
- "publisher": {
28
- "@type": "Organization",
29
- "name": "ThumbGate",
30
- "url": "https://thumbgate.ai"
31
- },
32
- "datePublished": "2026-06-20",
33
- "dateModified": "2026-06-20",
34
- "mainEntityOfPage": "https://thumbgate.ai/learn/databricks-unity-ai-gateway-runtime-governance",
35
- "about": [
36
- {"@type": "Thing", "name": "Databricks Unity AI Gateway"},
37
- {"@type": "Thing", "name": "runtime AI governance"},
38
- {"@type": "Thing", "name": "MCP governance"},
39
- {"@type": "Thing", "name": "pre-action gates"}
40
- ]
41
- }
42
- </script>
43
- <script type="application/ld+json">
44
- {
45
- "@context": "https://schema.org",
46
- "@type": "FAQPage",
47
- "mainEntity": [
48
- {
49
- "@type": "Question",
50
- "name": "What does Databricks Unity AI Gateway change for agent governance?",
51
- "acceptedAnswer": {
52
- "@type": "Answer",
53
- "text": "It moves the market conversation from static AI governance to runtime governance across models, agents, MCP services, skills, tools, observability, guardrails, and cost controls."
54
- }
55
- },
56
- {
57
- "@type": "Question",
58
- "name": "Where does ThumbGate fit?",
59
- "acceptedAnswer": {
60
- "@type": "Answer",
61
- "text": "ThumbGate fits at the local pre-action boundary. It gates the concrete tool action before a developer agent runs shell, edits files, calls MCP tools, opens browsers, hits APIs, or deploys."
62
- }
63
- },
64
- {
65
- "@type": "Question",
66
- "name": "Is this a Databricks partnership claim?",
67
- "acceptedAnswer": {
68
- "@type": "Answer",
69
- "text": "No. ThumbGate is not claiming partnership, certification, or endorsement by Databricks. The page uses public Databricks materials as market evidence for runtime governance."
70
- }
71
- }
72
- ]
73
- }
74
- </script>
75
- </head>
76
- <body>
77
-
78
- <nav>
79
- <a href="/" class="brand"><img src="/assets/brand/thumbgate-mark-inline.svg" alt="ThumbGate" class="logo-mark" width="28" height="28"><span class="logo-text">ThumbGate</span></a>
80
- <a href="/guide">Setup Guide</a>
81
- <a href="/learn">Learn</a>
82
- <a href="/compare">Compare</a>
83
- <a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub</a>
84
- </nav>
85
-
86
- <div class="container">
87
- <div class="breadcrumb"><a href="/learn">Learn</a> / Databricks Unity AI Gateway</div>
88
- <h1>Databricks validates runtime AI governance. The next layer is pre-action enforcement.</h1>
89
- <p style="color:var(--muted);">5 min read &middot; For teams turning enterprise gateway announcements into local agent controls</p>
90
-
91
- <div class="tldr"><strong>TL;DR:</strong> Databricks Unity AI Gateway is a strong market signal: agent governance is moving into runtime interactions across models, agents, MCP services, tools, cost controls, and observability. ThumbGate should ride that signal by owning the local pre-action gate: the moment before a developer agent calls shell, file, browser, API, MCP, or deploy tools.</div>
92
-
93
- <h2>What Databricks made obvious</h2>
94
- <p>Databricks describes Unity AI Gateway as governance for enterprise AI runtime interactions. Its launch materials talk about centralizing access and monitoring across AI providers, coding agents, frameworks, applications, custom AI systems, MCP services, tools, guardrails, and AI cost controls.</p>
95
- <p>That matters because it tells the buyer what the market now believes: governance cannot stop at policy documents, model catalogs, or dashboards. Once agents use tools, governance has to sit in the path of runtime decisions.</p>
96
-
97
- <h2>Gateway vs gate</h2>
98
- <p>An enterprise gateway answers questions like: Which model can this app call? Which MCP service is approved? Which team is burning tokens? Which guardrail applies to this route?</p>
99
- <p>A local pre-action gate asks a different question: Should this specific agent action run right now?</p>
100
- <ul>
101
- <li>Should this command run in this directory?</li>
102
- <li>Should this file edit proceed without a verified source?</li>
103
- <li>Should this Reddit, LinkedIn, X, or Bluesky post publish without action-time confirmation?</li>
104
- <li>Should this deploy continue when tests have not run?</li>
105
- <li>Should a repeated failure become a durable prevention rule?</li>
106
- </ul>
107
-
108
- <h2>The gap teams still hit locally</h2>
109
- <p>Even with a gateway, the developer's local agent can still drift: it can make the same bad claim, call the wrong tool, touch the wrong file, post externally without approval, or spend tokens on a loop that should have stopped earlier. Those are not abstract governance problems. They are workflow failures.</p>
110
- <p>ThumbGate's position is not "replace the gateway." The position is: <strong>gateway plus gate</strong>. Use the enterprise gateway for provider, model, service, MCP, and cost governance. Use ThumbGate at the local action boundary where the agent is about to do something irreversible or expensive.</p>
111
-
112
- <h2>What to test this week</h2>
113
- <ol>
114
- <li>Pick one repeated developer-agent failure: unsafe shell, unsupported claim, unapproved external post, missing test proof, wrong MCP tool, or runaway loop.</li>
115
- <li>Turn it into a ThumbGate rule.</li>
116
- <li>Run the workflow again and capture whether the bad action is blocked before the tool fires.</li>
117
- <li>Package the result as a small proof run: failure, gate, replay, result.</li>
118
- </ol>
119
-
120
- <div class="callout callout-green">
121
- <p><strong>Revenue framing:</strong> Databricks creates air cover for the budget line. ThumbGate sells the proof run: "Show me one workflow where your agent keeps repeating the same expensive mistake, and I will gate it before action."</p>
122
- </div>
123
-
124
- <h2>Sources and positioning</h2>
125
- <p>This article is based on public Databricks materials, including the June 2026 Unity AI Gateway launch posts and product page. ThumbGate is not a Databricks partner, product, certification, or endorsed integration. The comparison is architectural positioning.</p>
126
- <ul>
127
- <li><a href="https://www.databricks.com/blog/ai-governance-data-ai-summit-2026-whats-new-unity-ai-gateway" target="_blank" rel="noopener">Databricks: AI governance at Data + AI Summit 2026</a></li>
128
- <li><a href="https://www.databricks.com/blog/whats-new-unity-ai-gateway-service-policies-guardrails-observability-and-cost-controls-ai" target="_blank" rel="noopener">Databricks: service policies, guardrails, observability, and cost controls</a></li>
129
- <li><a href="https://www.databricks.com/product/artificial-intelligence/unity-ai-gateway" target="_blank" rel="noopener">Databricks: Unity AI Gateway product page</a></li>
130
- </ul>
131
-
132
- <div class="cta-box">
133
- <h2>Run the local gate</h2>
134
- <p>Start with one repeated agent failure. Gate it before the action executes.</p>
135
- <div class="cta-install">npx thumbgate init</div>
136
- <div class="cta-actions">
137
- <a class="cta-link" href="/compare/databricks-unity-ai-gateway">Compare gateway vs gate</a>
138
- <a class="cta-link cta-link-secondary" href="/learn/mcp-pre-action-checks-explained">Read MCP pre-action checks</a>
139
- </div>
140
- </div>
141
-
142
- <div class="related">
143
- <h2>Related</h2>
144
- <a href="/compare/databricks-unity-ai-gateway">ThumbGate vs Databricks Unity AI Gateway</a>
145
- <a href="/learn/cost-aware-agent-gate-routing">Cost-aware agent gate routing</a>
146
- <a href="/learn/background-agent-control-layer">Background agent control layer</a>
147
- </div>
148
- </div>
149
-
150
- <div class="sticky-cta">
151
- <span>Gate one repeated agent failure</span>
152
- <code>npx thumbgate init</code>
153
- <a href="/guide?utm_source=databricks_unity_ai_gateway&utm_medium=learn&utm_campaign=runtime_governance">Setup guide</a>
154
- </div>
155
-
156
- </body>
157
- </html>
@@ -1,185 +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>Deterministic Agent Workflows Need Runtime Gates — ThumbGate</title>
7
- <script defer data-domain="thumbgate.ai" src="https://plausible.io/js/script.js"></script>
8
- <meta name="description" content="Claude Code dynamic workflows make orchestration scriptable. Production teams still need deterministic run contracts, evidence, and pre-action gates before multi-agent workflows can be trusted.">
9
- <meta name="keywords" content="Claude Code workflows, deterministic agent workflows, dynamic workflows, multi-agent orchestration, pre-action gates, workflow hardening, AI agent governance, ThumbGate">
10
- <meta property="og:title" content="Deterministic Agent Workflows Need Runtime Gates">
11
- <meta property="og:description" content="Scripted workflows are the right direction. ThumbGate adds the missing layer: pre-action gates, evidence, and repeat-failure prevention before each tool call runs.">
12
- <meta property="og:type" content="article">
13
- <meta property="og:url" content="https://thumbgate.ai/learn/deterministic-agent-workflows">
14
- <link rel="canonical" href="https://thumbgate.ai/learn/deterministic-agent-workflows">
15
-
16
- <script type="application/ld+json">
17
- {
18
- "@context": "https://schema.org",
19
- "@type": "TechArticle",
20
- "headline": "Deterministic Agent Workflows Need Runtime Gates",
21
- "description": "Claude Code dynamic workflows make orchestration scriptable. Production teams still need deterministic run contracts, evidence, and pre-action gates before multi-agent workflows can be trusted.",
22
- "author": {
23
- "@type": "Person",
24
- "name": "Igor Ganapolsky",
25
- "url": "https://github.com/IgorGanapolsky"
26
- },
27
- "publisher": {
28
- "@type": "Organization",
29
- "name": "ThumbGate",
30
- "url": "https://thumbgate.ai"
31
- },
32
- "datePublished": "2026-06-03",
33
- "dateModified": "2026-06-03",
34
- "mainEntityOfPage": "https://thumbgate.ai/learn/deterministic-agent-workflows",
35
- "about": [
36
- {"@type": "Thing", "name": "Claude Code workflows"},
37
- {"@type": "Thing", "name": "deterministic agent workflows"},
38
- {"@type": "Thing", "name": "pre-action gates"},
39
- {"@type": "Thing", "name": "multi-agent orchestration"}
40
- ]
41
- }
42
- </script>
43
-
44
- <link rel="stylesheet" href="/learn/learn.css">
45
- <style>
46
- .matrix { width: 100%; border-collapse: collapse; margin: 1rem 0 1.5rem; }
47
- .matrix th, .matrix td { text-align: left; padding: 0.7rem 0.8rem; border-bottom: 1px solid var(--border); vertical-align: top; }
48
- .matrix th { color: var(--cyan); font-weight: 600; }
49
- .run-contract { background: var(--bg-card); border: 1px solid var(--border); border-radius: 8px; padding: 1rem; margin: 1rem 0; }
50
- .run-contract code { white-space: pre-wrap; }
51
- </style>
52
- </head>
53
- <body>
54
-
55
- <nav>
56
- <a href="/" class="brand"><img src="/assets/brand/thumbgate-mark-inline.svg" alt="ThumbGate" class="logo-mark" width="28" height="28"><span class="logo-text">ThumbGate</span></a>
57
- <a href="/guide">Setup Guide</a>
58
- <a href="/learn">Learn</a>
59
- <a href="/dashboard">Dashboard</a>
60
- <a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub</a>
61
- </nav>
62
-
63
- <div class="container">
64
- <div class="breadcrumb"><a href="/learn">Learn</a> / Deterministic Agent Workflows</div>
65
- <h1>Deterministic agent workflows need runtime gates.</h1>
66
- <p style="color:var(--muted);">6 min read &middot; For teams moving from one-off Claude Code prompts to repeatable multi-agent runs</p>
67
-
68
- <div class="tldr"><strong>TL;DR:</strong> Claude Code workflows make orchestration more repeatable by moving control flow into scripts. That is a major step forward, but deterministic orchestration is not deterministic safety. ThumbGate adds pre-action gates, proof requirements, and repeat-failure memory around each workflow run.</div>
69
-
70
- <h2>The workflow shift is real</h2>
71
- <p>Dynamic workflows move agent orchestration out of a fragile chat transcript and into scriptable control flow. That changes the operating model: teams can review the workflow, commit it to git, rerun it, and hand it to another operator without re-explaining the whole plan.</p>
72
- <p>The high-value lesson is simple: use code for control flow and use the model for judgment. The workflow script should decide sequence, fan-out, retries, and handoffs. The model should handle the parts that actually require reasoning.</p>
73
-
74
- <div class="callout">
75
- <strong>ThumbGate's angle:</strong> A deterministic workflow still contains nondeterministic agent calls. The control layer has to check every proposed tool action before it mutates state.
76
- </div>
77
-
78
- <h2>Where deterministic workflows still fail</h2>
79
- <p>A git-committed workflow can make a run repeatable, but it does not automatically make the run safe. The workflow can still:</p>
80
- <ul>
81
- <li>Run with stale assumptions about branch, environment, credentials, or allowed files.</li>
82
- <li>Spawn multiple subagents that repeat a known bad edit in parallel.</li>
83
- <li>Claim completion after a plan step without showing test, CI, screenshot, or deploy evidence.</li>
84
- <li>Let a subagent call shell, git, browser, or API tools outside the intended scope.</li>
85
- <li>Hide failure behind a successful final summary if the proof artifacts are not required.</li>
86
- </ul>
87
-
88
- <h2>The missing primitive: a workflow run contract</h2>
89
- <p>Before a deterministic workflow starts, define the contract the run must obey. The contract should be versioned next to the workflow and evaluated by gates outside the model.</p>
90
-
91
- <div class="run-contract">
92
- <pre><code>{
93
- "workflow_id": "pricing-surface-fix",
94
- "allowed_branches": ["feature/*", "fix/*"],
95
- "protected_paths": ["public/pricing.html", "src/api/server.js"],
96
- "required_evidence": ["git_diff", "targeted_tests", "link_check"],
97
- "blocked_actions": ["git push --force", "npm publish", "deploy production"],
98
- "completion_gate": "tests_passed_and_changes_pushed"
99
- }</code></pre>
100
- </div>
101
-
102
- <p>That contract gives the workflow a boundary. ThumbGate turns the boundary into runtime decisions: allow, warn, block, or require approval.</p>
103
-
104
- <table class="matrix">
105
- <thead>
106
- <tr>
107
- <th>Workflow layer</th>
108
- <th>What it controls</th>
109
- <th>ThumbGate gate</th>
110
- </tr>
111
- </thead>
112
- <tbody>
113
- <tr>
114
- <td>Plan</td>
115
- <td>Which tasks and subagents run.</td>
116
- <td>Require scope, branch, allowed paths, and done criteria before tools execute.</td>
117
- </tr>
118
- <tr>
119
- <td>Fan-out</td>
120
- <td>How many agents work in parallel.</td>
121
- <td>Block repeated known-bad actions across subagents before they amplify.</td>
122
- </tr>
123
- <tr>
124
- <td>Tool calls</td>
125
- <td>Shell, file writes, git, browser, API, deploy, publish.</td>
126
- <td>Evaluate PreToolUse checks before state changes.</td>
127
- </tr>
128
- <tr>
129
- <td>Merge / publish</td>
130
- <td>When the run becomes durable.</td>
131
- <td>Require tests, link checks, CI status, PR URL, and no unresolved high-risk gates.</td>
132
- </tr>
133
- <tr>
134
- <td>Learning</td>
135
- <td>What the next run remembers.</td>
136
- <td>Promote thumbs-downs and failed proof checks into prevention rules.</td>
137
- </tr>
138
- </tbody>
139
- </table>
140
-
141
- <h2>The highest-ROI ThumbGate feature from this trend</h2>
142
- <p>The feature to sell is not "we run workflows." Claude Code, Cursor, Codex, and other harnesses will all keep improving orchestration. The ThumbGate feature is <strong>workflow proof gating</strong>: before a workflow claims success, it must prove the contract was satisfied.</p>
143
-
144
- <ul>
145
- <li><strong>Before run:</strong> validate branch, scope, credentials, allowed paths, and budget.</li>
146
- <li><strong>During run:</strong> check every tool call against feedback-derived lessons and policy gates.</li>
147
- <li><strong>After run:</strong> require evidence artifacts before "done," "merged," "published," or "deployed" claims.</li>
148
- <li><strong>Next run:</strong> use thumbs-downs and failed evidence checks to block repeated mistakes earlier.</li>
149
- </ul>
150
-
151
- <div class="callout callout-green">
152
- <strong>Buyer demo:</strong> show the same deterministic workflow twice. First run records a blocked risky action. Second run stops the repeat before execution and exports the proof.
153
- </div>
154
-
155
- <h2>Implementation checklist</h2>
156
- <ol>
157
- <li>Commit workflow scripts and run contracts to git.</li>
158
- <li>Run workflow agents on feature branches or isolated worktrees.</li>
159
- <li>Route all tool calls through ThumbGate PreToolUse checks.</li>
160
- <li>Require proof artifacts before completion claims.</li>
161
- <li>Track the headline metric: repeated workflow failures blocked before execution.</li>
162
- </ol>
163
-
164
- <div class="cta-box">
165
- <h2 style="color:var(--text);font-size:1.3rem;margin:0 0 8px;">Harden one deterministic workflow</h2>
166
- <p>Start with one run contract, one repeated failure, and one proof gate.</p>
167
- <div class="cta-install">$ npx thumbgate init</div>
168
- </div>
169
-
170
- <div class="related">
171
- <h3>Related articles</h3>
172
- <a href="/learn/background-agent-control-layer">Background Agents Need a Control Layer &rarr;</a>
173
- <a href="/learn/agentic-enterprise-context-brain">Agentic Enterprise Context Brain &rarr;</a>
174
- <a href="/learn/agent-swarms-shared-gates">Agent Swarms: One Gate Layer, Every Model &rarr;</a>
175
- <a href="/learn/mcp-pre-action-checks-explained">MCP Pre-Action Checks Explained &rarr;</a>
176
- </div>
177
- </div>
178
-
179
- <div class="sticky-cta">
180
- <span style="color:var(--muted)">Try it now:</span>
181
- <code>npx thumbgate init</code>
182
- <a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub &rarr;</a>
183
- </div>
184
- </body>
185
- </html>
@@ -1,283 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>The feedback loop is the product. The PreToolUse hook is its endpoint. - ThumbGate</title>
7
- <script defer data-domain="thumbgate.ai" src="https://plausible.io/js/script.js"></script>
8
- <meta name="description" content="ThumbGate is not a PreToolUse hook with feedback bolted on. It is a four-stage feedback-to-enforcement loop — capture the attorney or engineer's vote on any AI answer, store the lesson locally, promote recurring patterns to deterministic rules, then enforce at PreToolUse — where the hook is the endpoint of the loop, not the product. This is why customers buy the loop, not the hook.">
9
- <meta name="keywords" content="ThumbGate feedback loop, agent governance loop, decision-layer vs action-layer enforcement, thumbs up down AI agent, Thompson Sampling rule promotion, PreToolUse endpoint, lesson DB enforcement">
10
- <meta property="og:title" content="The feedback loop is the product. The PreToolUse hook is its endpoint.">
11
- <meta property="og:description" content="Capture vote → store lesson → promote rule → enforce at runtime. ThumbGate is the loop. The hook is one stage of four.">
12
- <meta property="og:type" content="article">
13
- <meta property="og:url" content="https://thumbgate.ai/learn/feedback-loop-vs-decision-layer">
14
- <link rel="canonical" href="https://thumbgate.ai/learn/feedback-loop-vs-decision-layer">
15
- <link rel="stylesheet" href="/learn/learn.css">
16
- <script type="application/ld+json">
17
- {
18
- "@context": "https://schema.org",
19
- "@type": "TechArticle",
20
- "headline": "The feedback loop is the product. The PreToolUse hook is its endpoint.",
21
- "description": "Decision-layer governance (prompt rules, AI judge models, human-in-the-loop workflow principles) is necessary but not sufficient. Action-layer enforcement at the PreToolUse hook is the deterministic gate. But neither alone is the product. ThumbGate's product is the four-stage feedback-to-enforcement loop: capture the user's vote on any AI answer, store the lesson, promote recurring patterns to rules, then enforce — closing the loop so the next decision is gated before the next human is ever asked to approve.",
22
- "author": {
23
- "@type": "Person",
24
- "name": "Igor Ganapolsky",
25
- "url": "https://github.com/IgorGanapolsky"
26
- },
27
- "publisher": {
28
- "@type": "Organization",
29
- "name": "ThumbGate",
30
- "url": "https://thumbgate.ai"
31
- },
32
- "datePublished": "2026-05-27",
33
- "dateModified": "2026-05-27",
34
- "mainEntityOfPage": "https://thumbgate.ai/learn/feedback-loop-vs-decision-layer",
35
- "about": [
36
- { "@type": "Thing", "name": "agent governance feedback loop" },
37
- { "@type": "Thing", "name": "decision-layer vs action-layer enforcement" },
38
- { "@type": "Thing", "name": "deterministic rule promotion" },
39
- { "@type": "Thing", "name": "Thompson Sampling for agent rules" }
40
- ]
41
- }
42
- </script>
43
- <script type="application/ld+json">
44
- {
45
- "@context": "https://schema.org",
46
- "@type": "FAQPage",
47
- "mainEntity": [
48
- {
49
- "@type": "Question",
50
- "name": "Is ThumbGate a PreToolUse hook, a feedback collector, or a rule engine?",
51
- "acceptedAnswer": {
52
- "@type": "Answer",
53
- "text": "All three, in a loop. ThumbGate is the four-stage loop: (1) Capture — the user clicks 👍 or 👎 on any AI answer, decision, or proposed tool call; (2) Memory — the feedback record lands in a local lesson DB (SQLite + LanceDB vector index) on the user's infrastructure; (3) Rule promotion — recurring 👎 patterns get promoted to deterministic prevention rules via Thompson Sampling, and recurring 👍 patterns become reinforced routing; (4) Enforcement — the promoted rules fire at the PreToolUse hook before the agent's next proposed tool call executes. The PreToolUse hook is one stage of four. Customers buy the loop, not any single stage."
54
- }
55
- },
56
- {
57
- "@type": "Question",
58
- "name": "What is decision-layer governance, and why isn't it enough?",
59
- "acceptedAnswer": {
60
- "@type": "Answer",
61
- "text": "Decision-layer governance is anything that asks the model to reason about whether an action is safe: prompt rules embedded in the system prompt, AI 'judge' models that score proposed actions, human-in-the-loop workflow principles, ethics-training modules for the model. All of these can fail in three ways: the model forgets the rule under context compression, the model reasons around the rule as a new edge case, or the model produces output the human approver misses. Sullivan & Cromwell had every form of decision-layer governance — policies, mandatory training, verification requirements — and still filed AI-hallucinated citations with a federal judge in early 2026. Decision-layer governance is necessary. It is not sufficient."
62
- }
63
- },
64
- {
65
- "@type": "Question",
66
- "name": "What is action-layer enforcement, and why isn't it enough by itself either?",
67
- "acceptedAnswer": {
68
- "@type": "Answer",
69
- "text": "Action-layer enforcement is a runtime gate that inspects the proposed action (a tool call, a shell command, an outbound API request) before it executes and returns allow / warn / block / route-to-human deterministically — no LLM in the decision path. It catches what decision-layer governance misses. But action-layer enforcement alone is a static rule set. It doesn't learn from the team's actual incidents. It doesn't get sharper after each blocked action. It treats every team the same. The piece that makes the gate yours is the feedback loop that promotes your team's specific patterns into the rule set. Action-layer enforcement is necessary. It is not sufficient either."
70
- }
71
- },
72
- {
73
- "@type": "Question",
74
- "name": "Why does the loop matter more than the hook?",
75
- "acceptedAnswer": {
76
- "@type": "Answer",
77
- "text": "Three reasons. First, the loop encodes your team's specific failure patterns — not generic SOC2 boilerplate, not vendor-shipped rules. Every 👎 your attorney or engineer logs becomes part of your firm's governance. Second, the loop survives model upgrades — a rule promoted from a lesson DB lives in your infrastructure, not in a prompt that the next Claude or Gemini release will reinterpret. Third, the loop turns vendor incidents into competitor moats — Sullivan & Cromwell's hallucination is a one-time embarrassment for them; if their lesson DB had captured the pattern and promoted it to a rule, every subsequent intake at every S&C office would have the gate firing the moment a similar advice-shaped output was proposed. The PreToolUse hook is the moment of enforcement. The loop is what makes the moment intelligent."
78
- }
79
- },
80
- {
81
- "@type": "Question",
82
- "name": "How does the loop compare to RLHF or fine-tuning the model?",
83
- "acceptedAnswer": {
84
- "@type": "Answer",
85
- "text": "RLHF (Reinforcement Learning from Human Feedback) is decision-layer governance — it adjusts the model's weights so the model is statistically less likely to produce bad output. ThumbGate's loop is the opposite category: it doesn't touch the model. The lesson DB and the promoted rules live outside the model context. A model upgrade resets training-baked safety; rules in the lesson DB survive. RLHF needs millions of examples to shift behavior; one team's 👎 in ThumbGate becomes a rule after a small number of consistent flags (default Thompson Sampling threshold). RLHF is a model-vendor decision; the lesson DB is your team's decision."
86
- }
87
- }
88
- ]
89
- }
90
- </script>
91
- <style>
92
- table { width: 100%; border-collapse: collapse; margin: 1rem 0; }
93
- th, td { text-align: left; padding: 0.7rem 0.8rem; border-bottom: 1px solid var(--border); vertical-align: top; font-size: 0.92rem; }
94
- th { color: var(--cyan); font-weight: 700; }
95
- .layer strong { color: var(--green); }
96
- .mini-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; margin: 1.25rem 0; }
97
- .mini-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: 8px; padding: 1rem; }
98
- .mini-card h3 { margin-top: 0; color: var(--text); }
99
- .mini-card p { color: var(--muted); }
100
- .loop-stage { border-left: 3px solid var(--cyan); padding: 0.6rem 1rem; margin: 0.75rem 0; background: rgba(34, 211, 238, 0.04); border-radius: 0 6px 6px 0; }
101
- .loop-stage strong { color: var(--cyan); display: block; font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 0.2rem; }
102
- blockquote { border-left: 3px solid var(--cyan); margin: 1rem 0; padding: 0.5rem 1rem; color: var(--text); font-style: italic; background: rgba(34, 211, 238, 0.05); }
103
- .loop-diagram { display: grid; grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr auto; gap: 0.5rem; align-items: stretch; margin: 1.5rem 0 0.5rem; padding: 1.25rem; background: rgba(34, 211, 238, 0.03); border: 1px solid rgba(34, 211, 238, 0.2); border-radius: 10px; position: relative; }
104
- .loop-diagram .stage { background: #0f0f11; border: 1px solid rgba(34, 211, 238, 0.4); border-radius: 8px; padding: 0.75rem 0.85rem; display: flex; flex-direction: column; gap: 0.35rem; min-width: 0; }
105
- .loop-diagram .stage .num { font-size: 0.7rem; color: var(--cyan); letter-spacing: 0.12em; text-transform: uppercase; font-weight: 600; }
106
- .loop-diagram .stage .name { color: var(--text); font-size: 1rem; font-weight: 600; line-height: 1.2; }
107
- .loop-diagram .stage .blurb { color: var(--muted); font-size: 0.78rem; line-height: 1.35; }
108
- .loop-diagram .arrow { display: flex; align-items: center; justify-content: center; color: var(--cyan); font-size: 1.4rem; line-height: 1; user-select: none; }
109
- .loop-diagram .closes { display: flex; align-items: center; justify-content: center; color: var(--green); font-weight: 600; font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase; padding-left: 0.4rem; border-left: 1px dashed rgba(114, 227, 165, 0.4); }
110
- .loop-diagram .closes span { writing-mode: vertical-rl; transform: rotate(180deg); }
111
- .loop-diagram-caption { font-size: 0.82rem; color: var(--muted); margin: 0.25rem 0 1.25rem; text-align: center; }
112
- @media (max-width: 800px) {
113
- .loop-diagram { grid-template-columns: 1fr; }
114
- .loop-diagram .arrow { transform: rotate(90deg); padding: 0.1rem 0; }
115
- .loop-diagram .closes { writing-mode: initial; padding: 0.5rem; border-left: none; border-top: 1px dashed rgba(114, 227, 165, 0.4); justify-content: center; }
116
- .loop-diagram .closes span { writing-mode: initial; transform: none; }
117
- }
118
- @media (max-width: 700px) { .mini-grid { grid-template-columns: 1fr; } }
119
- </style>
120
- </head>
121
- <body>
122
- <nav>
123
- <a href="/" class="brand"><img src="/assets/brand/thumbgate-mark-inline.svg" alt="ThumbGate" class="logo-mark" width="28" height="28"><span class="logo-text">ThumbGate</span></a>
124
- <a href="/guide">Setup Guide</a>
125
- <a href="/learn">Learn</a>
126
- <a href="/dashboard">Dashboard</a>
127
- <a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub</a>
128
- </nav>
129
-
130
- <div class="container">
131
- <div class="breadcrumb"><a href="/learn">Learn</a> / The feedback loop vs the decision layer</div>
132
- <h1>The feedback loop is the product. The PreToolUse hook is its endpoint.</h1>
133
- <p style="color:var(--muted);">6 min read &middot; For engineering leaders, attorneys, and risk teams deciding how to govern AI agents in their environment</p>
134
-
135
- <div class="tldr"><strong>TL;DR:</strong> ThumbGate isn't a PreToolUse hook with feedback bolted on. It's a four-stage feedback-to-enforcement loop. Capture the user's 👍/👎 on any AI answer → store the lesson locally → promote recurring patterns to deterministic rules → enforce at PreToolUse. The hook is one stage of four. The loop is the product. Decision-layer governance (prompt rules, AI judges, "human in the loop") is necessary but not sufficient — Sullivan &amp; Cromwell had every form of it and still got sanctioned. Action-layer enforcement alone is a static rule set. The loop is what makes the rule set <em>yours</em>.</div>
136
-
137
- <h2>Two layers that everyone confuses</h2>
138
- <p>Most "AI agent governance" conversations are stuck in one of two camps:</p>
139
-
140
- <table>
141
- <thead>
142
- <tr>
143
- <th>Layer</th>
144
- <th>What it does</th>
145
- <th>Why it isn't enough alone</th>
146
- </tr>
147
- </thead>
148
- <tbody>
149
- <tr class="layer">
150
- <td><strong>Decision-layer</strong></td>
151
- <td>Prompt rules embedded in the system prompt. AI judge models that score proposed actions. Human-in-the-loop workflow principles. RLHF training that adjusts model weights toward safe output.</td>
152
- <td>The model can forget the rule under context compression, reason around it as a new edge case, or produce output the human approver misses. Decision-layer governance is what Sullivan &amp; Cromwell had when they filed AI-hallucinated citations with a federal judge.</td>
153
- </tr>
154
- <tr class="layer">
155
- <td><strong>Action-layer</strong></td>
156
- <td>A runtime gate that inspects the proposed tool call (bash, SQL, file write, MCP call, outbound LLM call) at PreToolUse and returns allow / warn / block / route-to-human deterministically.</td>
157
- <td>A static rule set is generic. It doesn't learn from <em>your</em> team's incidents. It doesn't get sharper after each blocked action. Every team gets the same starter pack. The piece that makes the gate <em>yours</em> is missing.</td>
158
- </tr>
159
- </tbody>
160
- </table>
161
-
162
- <div class="callout">
163
- <strong>Both layers are necessary. Neither is sufficient. The product that makes them a system is the loop that connects them.</strong>
164
- </div>
165
-
166
- <h2>The four-stage feedback-to-enforcement loop</h2>
167
- <p>ThumbGate is the loop, not the hook. Four stages, all in your environment, all closing the gap between "the user noticed something was wrong" and "the next agent action that pattern matches is gated automatically."</p>
168
-
169
- <div class="loop-diagram" aria-label="Four-stage feedback-to-enforcement loop">
170
- <div class="stage">
171
- <span class="num">Stage 1</span>
172
- <span class="name">Capture</span>
173
- <span class="blurb">Attorney clicks 👍 or 👎 on an AI answer. One click, full context recorded.</span>
174
- </div>
175
- <div class="arrow" aria-hidden="true">&rarr;</div>
176
- <div class="stage">
177
- <span class="num">Stage 2</span>
178
- <span class="name">Memory</span>
179
- <span class="blurb">Local lesson DB (SQLite + LanceDB). Nothing leaves the firm.</span>
180
- </div>
181
- <div class="arrow" aria-hidden="true">&rarr;</div>
182
- <div class="stage">
183
- <span class="num">Stage 3</span>
184
- <span class="name">Rule promotion</span>
185
- <span class="blurb">Recurring 👎 patterns promote to deterministic, human-editable rules.</span>
186
- </div>
187
- <div class="arrow" aria-hidden="true">&rarr;</div>
188
- <div class="stage">
189
- <span class="num">Stage 4</span>
190
- <span class="name">Enforcement</span>
191
- <span class="blurb">Rules fire pre-action: allow, warn, block, or route to attorney.</span>
192
- </div>
193
- <div class="closes" aria-label="Loop closes back to capture"><span>Loop closes &rarr; back to capture</span></div>
194
- </div>
195
- <p class="loop-diagram-caption">All four stages run inside your environment. The hook is just the visible endpoint of stage 4.</p>
196
-
197
- <div class="loop-stage">
198
- <strong>Stage 1 &mdash; Capture</strong>
199
- The user (attorney, engineer, risk officer) reviews an AI answer &mdash; a Claude for Legal drafted clause, a Cursor proposed refactor, a Claude Code shell command, a Codex agent's research summary. They click 👍 (the answer was good) or 👎 (the answer was wrong, unauthorized, or unsafe). One click. The record stores the context, what worked or went wrong, and what should change next time.
200
- </div>
201
-
202
- <div class="loop-stage">
203
- <strong>Stage 2 &mdash; Memory</strong>
204
- The feedback record lands in a local lesson DB on the team's infrastructure &mdash; SQLite with FTS5 for keyword/lexical recall, plus LanceDB for vector/semantic recall. Wins, mistakes, and edge cases all stored. The DB is searchable: when a new agent task matches a prior pattern, the relevant lessons surface as context before the agent answers. Nothing leaves the team's perimeter.
205
- </div>
206
-
207
- <div class="loop-stage">
208
- <strong>Stage 3 &mdash; Rule promotion</strong>
209
- When a 👎 pattern recurs across distinct sessions, Thompson Sampling promotes it from a one-off lesson to a deterministic prevention rule. Wins reinforce preferred routing the same way. The rule is human-readable and editable &mdash; the team's ethics or platform lead can audit, soften, or override it. The promotion logic is deterministic, not a black box.
210
- </div>
211
-
212
- <div class="loop-stage">
213
- <strong>Stage 4 &mdash; Enforcement</strong>
214
- Promoted rules fire at the PreToolUse hook before the agent's next proposed tool call executes. Allow, warn, block, or route-to-human, with an artifact-level audit log (rule ID, version, matched pattern, audit ID, ISO 27001 control mapping). The user's vote from Stage 1 is now an enforced constraint that fires deterministically before any human is asked to approve again. The loop closes.
215
- </div>
216
-
217
- <h2>Why the loop matters more than any single stage</h2>
218
-
219
- <div class="mini-grid">
220
- <div class="mini-card">
221
- <h3>It encodes your patterns, not vendor boilerplate</h3>
222
- <p>Generic governance rules ("don't push to main") are table stakes. The rules that actually matter for your firm or your team are the ones derived from your incidents &mdash; the specific UPL phrasing your associates flag, the matter-number conventions your privilege review uses, the deploy commands your platform team blocks. The loop encodes those automatically.</p>
223
- </div>
224
- <div class="mini-card">
225
- <h3>It survives model upgrades and prompt resets</h3>
226
- <p>A rule in the prompt vanishes when the next Claude or Gemini release reinterprets context. A rule promoted from your lesson DB lives in your infrastructure, separate from any model vendor. Model upgrades reset training-baked safety; the lesson DB doesn't.</p>
227
- </div>
228
- <div class="mini-card">
229
- <h3>It turns one incident into permanent prevention</h3>
230
- <p>Sullivan &amp; Cromwell's hallucination was a one-time embarrassment for them. If their lesson DB had captured the pattern and promoted it to a rule, every subsequent intake across every S&amp;C office would have the gate firing the moment a similar advice-shaped output was proposed. The first 👎 becomes the rule that catches the next ten cases.</p>
231
- </div>
232
- <div class="mini-card">
233
- <h3>It composes with model providers, not against them</h3>
234
- <p>Anthropic's Claude for Legal, Harvey's BigLaw assistants, Cursor's agent mode, OpenAI's Codex CLI &mdash; all of these are decision-layer products. The loop runs underneath them, agnostic to which vendor generated the proposed action. You don't pick a vendor and live with their generic safety; you pick the vendor for capability and own the safety yourself.</p>
235
- </div>
236
- </div>
237
-
238
- <h2>How this differs from RLHF and other "model-side" approaches</h2>
239
- <p>RLHF (Reinforcement Learning from Human Feedback) is decision-layer governance &mdash; it adjusts the model's weights so the model is statistically less likely to produce bad output. ThumbGate's loop is the opposite category. It doesn't touch the model. The lesson DB and the promoted rules live outside the model context.</p>
240
- <table>
241
- <thead>
242
- <tr><th>Property</th><th>RLHF / model fine-tuning</th><th>ThumbGate feedback loop</th></tr>
243
- </thead>
244
- <tbody>
245
- <tr><td><strong>Where the change lives</strong></td><td>Inside the model weights</td><td>Outside the model, in your lesson DB</td></tr>
246
- <tr><td><strong>Who controls it</strong></td><td>Model vendor</td><td>Your team</td></tr>
247
- <tr><td><strong>How many examples to shift behavior</strong></td><td>Millions</td><td>Default Thompson Sampling threshold &mdash; a small number of consistent 👎</td></tr>
248
- <tr><td><strong>What happens at model upgrade</strong></td><td>Training-baked safety partially resets</td><td>Rules survive; loop continues</td></tr>
249
- <tr><td><strong>Auditability</strong></td><td>Opaque weights; explainability is best-effort</td><td>Rule ID + version + matched pattern + audit ID, deterministic</td></tr>
250
- </tbody>
251
- </table>
252
-
253
- <blockquote>The loop is the product. The hook is the moment of enforcement. The DB is the memory. The promotion is the learning. Without all four, "agent governance" is either a prompt rule or a static gate &mdash; both useful, neither sufficient.</blockquote>
254
-
255
- <h2>What to do with this if you're evaluating ThumbGate</h2>
256
- <ol>
257
- <li><strong>Don't ask "does it have PreToolUse hooks?"</strong> &mdash; every governance tool will say yes. Ask <em>"does the gate get sharper after each incident, automatically, in our environment?"</em></li>
258
- <li><strong>Don't ask "what rules ship out of the box?"</strong> &mdash; the rules that matter are the ones derived from your team's incidents. Ask <em>"how does a 👎 from one of our reviewers become a rule that fires for everyone next week?"</em></li>
259
- <li><strong>Don't ask "does it work with Claude?"</strong> &mdash; ask <em>"does it work with whichever vendor we pick next quarter?"</em> The loop is vendor-agnostic by design.</li>
260
- </ol>
261
-
262
- <div class="cta-box">
263
- <h2 style="color:var(--text);font-size:1.3rem;margin:0 0 8px;">Install the loop, not just the gate</h2>
264
- <p>The PreToolUse hook is the endpoint. The loop is what makes it learn. Two minutes to install.</p>
265
- <div class="cta-install">$ npx thumbgate init</div>
266
- </div>
267
-
268
- <div class="related">
269
- <h3>Related articles</h3>
270
- <a href="/learn/background-agent-control-layer">Background Agent Control Layer &rarr;</a>
271
- <a href="/learn/ac-dc-runtime-enforcement">AC/DC Runtime Enforcement &rarr;</a>
272
- <a href="/learn/mcp-pre-action-checks-explained">MCP Pre-Action Checks Explained &rarr;</a>
273
- <a href="/compare/anthropic-containment">ThumbGate vs Anthropic Containment &rarr;</a>
274
- </div>
275
- </div>
276
-
277
- <div class="sticky-cta">
278
- <span style="color:var(--muted)">Try it now:</span>
279
- <code>npx thumbgate init</code>
280
- <a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub &rarr;</a>
281
- </div>
282
- </body>
283
- </html>