thumbgate 1.27.19 → 1.28.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 (116) hide show
  1. package/.claude/commands/dashboard.md +15 -0
  2. package/.claude/commands/thumbgate-blocked.md +27 -0
  3. package/.claude/commands/thumbgate-dashboard.md +15 -0
  4. package/.claude/commands/thumbgate-doctor.md +30 -0
  5. package/.claude/commands/thumbgate-guard.md +36 -0
  6. package/.claude/commands/thumbgate-protect.md +30 -0
  7. package/.claude/commands/thumbgate-rules.md +30 -0
  8. package/.claude-plugin/plugin.json +1 -1
  9. package/.well-known/mcp/server-card.json +1 -1
  10. package/README.md +63 -45
  11. package/adapters/claude/.mcp.json +2 -2
  12. package/adapters/gcp/dfcx-webhook-gate.js +295 -0
  13. package/adapters/letta/README.md +41 -0
  14. package/adapters/letta/thumbgate-letta-adapter.js +133 -0
  15. package/adapters/mcp/server-stdio.js +1 -1
  16. package/adapters/opencode/opencode.json +1 -1
  17. package/adapters/policy-engine/ethicore-guardian-client.js +68 -0
  18. package/adapters/policy-engine/thumbgate-policy-engine-adapter.js +260 -0
  19. package/bench/observability-eval-suite.json +26 -0
  20. package/bin/cli.js +52 -9
  21. package/bin/dashboard-cli.js +7 -0
  22. package/bin/postinstall.js +14 -23
  23. package/commands/dashboard.md +15 -0
  24. package/commands/thumbgate-dashboard.md +15 -0
  25. package/config/entitlement-public-keys.json +6 -0
  26. package/config/gates/default.json +1 -1
  27. package/config/github-about.json +2 -2
  28. package/config/merge-quality-checks.json +3 -0
  29. package/package.json +233 -100
  30. package/public/about.html +159 -0
  31. package/public/agent-manager.html +179 -0
  32. package/public/agents-cost-savings.html +153 -0
  33. package/public/ai-malpractice-prevention.html +818 -0
  34. package/public/assets/brand/github-social-preview.png +0 -0
  35. package/public/assets/brand/thumbgate-icon-512.png +0 -0
  36. package/public/assets/brand/thumbgate-icon-pro-512.png +0 -0
  37. package/public/assets/brand/thumbgate-icon-team-512.png +0 -0
  38. package/public/assets/brand/thumbgate-logo-1200x360.png +0 -0
  39. package/public/assets/brand/thumbgate-logo-transparent.svg +28 -0
  40. package/public/assets/brand/thumbgate-mark-inline-v3.svg +18 -0
  41. package/public/assets/brand/thumbgate-mark-pro.svg +23 -0
  42. package/public/assets/brand/thumbgate-mark-team.svg +26 -0
  43. package/public/assets/brand/thumbgate-mark.svg +21 -0
  44. package/public/assets/brand/thumbgate-wordmark.svg +20 -0
  45. package/public/assets/claude-thumbgate-statusbar.svg +8 -0
  46. package/public/assets/codex-thumbgate-statusbar-test.svg +9 -0
  47. package/public/assets/legal-intake-control-flow.svg +66 -0
  48. package/public/blog.html +12 -9
  49. package/public/brand/thumbgate-mark.svg +19 -0
  50. package/public/brand/thumbgate-og.svg +16 -0
  51. package/public/chatgpt-app.html +330 -0
  52. package/public/codex-enterprise.html +123 -0
  53. package/public/codex-plugin.html +5 -5
  54. package/public/compare.html +10 -10
  55. package/public/dashboard.html +1 -1
  56. package/public/diagnostic.html +345 -0
  57. package/public/federal.html +2 -2
  58. package/public/guide.html +14 -14
  59. package/public/index.html +81 -70
  60. package/public/install.html +193 -0
  61. package/public/js/buyer-intent.js +672 -0
  62. package/public/learn.html +4 -17
  63. package/public/numbers.html +2 -2
  64. package/public/pricing.html +392 -0
  65. package/public/pro.html +2 -2
  66. package/scripts/action-receipts.js +324 -0
  67. package/scripts/activation-quickstart.js +187 -0
  68. package/scripts/agent-operations-planner.js +621 -0
  69. package/scripts/agent-reward-model.js +13 -0
  70. package/scripts/ai-component-inventory.js +367 -0
  71. package/scripts/async-eval-observability.js +236 -0
  72. package/scripts/audit.js +65 -0
  73. package/scripts/aws-blocks-guardrails.js +272 -0
  74. package/scripts/bayes-optimal-gate.js +6 -1
  75. package/scripts/classifier-routing.js +130 -0
  76. package/scripts/cli-feedback.js +17 -1
  77. package/scripts/commercial-offer.js +3 -3
  78. package/scripts/dashboard-chat.js +332 -0
  79. package/scripts/entitlement.js +250 -0
  80. package/scripts/export-databricks-bundle.js +5 -0
  81. package/scripts/export-dpo-pairs.js +6 -0
  82. package/scripts/export-hf-dataset.js +5 -0
  83. package/scripts/feedback-aggregate.js +281 -0
  84. package/scripts/feedback-sanitizer.js +105 -0
  85. package/scripts/gates-engine.js +15 -3
  86. package/scripts/hook-stop-anti-claim.js +301 -0
  87. package/scripts/imperative-detector.js +85 -0
  88. package/scripts/install-shim.js +87 -0
  89. package/scripts/intervention-policy.js +13 -0
  90. package/scripts/mcp-oauth.js +293 -0
  91. package/scripts/noop-detect.js +285 -0
  92. package/scripts/parallel-workflow-orchestrator.js +293 -0
  93. package/scripts/plan-gate.js +243 -0
  94. package/scripts/plausible-domain-config.js +99 -0
  95. package/scripts/pr-manager.js +9 -22
  96. package/scripts/pro-local-dashboard.js +198 -0
  97. package/scripts/qa-scenario-planner.js +136 -0
  98. package/scripts/repeat-metric.js +137 -0
  99. package/scripts/risk-scorer.js +6 -0
  100. package/scripts/secret-fixture-tokens.js +61 -0
  101. package/scripts/secret-redaction.js +166 -0
  102. package/scripts/self-harness-optimizer.js +141 -0
  103. package/scripts/self-healing-check.js +193 -0
  104. package/scripts/self-protection.js +90 -0
  105. package/scripts/seo-gsd.js +2 -2
  106. package/scripts/silent-failure-cluster.js +531 -0
  107. package/scripts/statusline-cache-read.js +57 -0
  108. package/scripts/sync-telemetry-from-prod.js +374 -0
  109. package/scripts/thompson-sampling.js +11 -2
  110. package/scripts/tool-contract-validator.js +76 -0
  111. package/scripts/trajectory-scorer.js +63 -0
  112. package/scripts/verify-marketing-pages-deployed.js +212 -0
  113. package/scripts/visitor-journey.js +172 -0
  114. package/src/api/server.js +81 -10
  115. package/.claude-plugin/marketplace.json +0 -85
  116. package/adapters/chatgpt/openapi.yaml +0 -1707
@@ -0,0 +1,330 @@
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">
6
+ <title>ThumbGate for ChatGPT - GPT Action + Agent Guardrails</title>
7
+ <meta name="description" content="Open the ThumbGate GPT, import the GPT Action schema, and connect ChatGPT lessons to local Codex, Claude Code, Cursor, and MCP agent enforcement.">
8
+ <link rel="canonical" href="https://thumbgate.ai/chatgpt-app">
9
+ <link rel="alternate" type="text/markdown" title="ThumbGate LLM context" href="https://thumbgate.ai/llm-context.md">
10
+ <meta property="og:title" content="ThumbGate for ChatGPT">
11
+ <meta property="og:description" content="A first-class ChatGPT entrypoint for preflighting risky agent actions and feeding typed lessons into ThumbGate enforcement.">
12
+ <meta property="og:type" content="website">
13
+ <meta property="og:url" content="https://thumbgate.ai/chatgpt-app">
14
+ <meta property="og:image" content="https://thumbgate.ai/assets/brand/thumbgate-logo-1200x360.png">
15
+ <meta name="twitter:card" content="summary_large_image">
16
+ <script type="application/ld+json">
17
+ {
18
+ "@context": "https://schema.org",
19
+ "@type": "SoftwareApplication",
20
+ "name": "ThumbGate for ChatGPT",
21
+ "applicationCategory": "DeveloperApplication",
22
+ "operatingSystem": "Web, macOS, Linux, Windows",
23
+ "url": "https://thumbgate.ai/chatgpt-app",
24
+ "description": "ChatGPT GPT Action entrypoint for checking risky agent actions and carrying typed thumbs-up/down lessons into ThumbGate local enforcement.",
25
+ "offers": [
26
+ { "@type": "Offer", "price": "0", "priceCurrency": "USD", "name": "Free GPT entrypoint" },
27
+ { "@type": "Offer", "price": "19", "priceCurrency": "USD", "name": "ThumbGate Pro", "url": "https://thumbgate.ai/checkout/pro" }
28
+ ]
29
+ }
30
+ </script>
31
+ <style>
32
+ :root {
33
+ color-scheme: dark;
34
+ --bg: #050607;
35
+ --panel: #111418;
36
+ --panel-2: #171b20;
37
+ --line: #2a3038;
38
+ --cyan: #20d8ef;
39
+ --green: #55e38b;
40
+ --text: #f3f6f8;
41
+ --muted: #aab3bd;
42
+ --warning: #ffd166;
43
+ }
44
+ * { box-sizing: border-box; }
45
+ body {
46
+ margin: 0;
47
+ background: var(--bg);
48
+ color: var(--text);
49
+ font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
50
+ letter-spacing: 0;
51
+ }
52
+ a { color: inherit; }
53
+ .shell { max-width: 1120px; margin: 0 auto; padding: 28px 20px 72px; }
54
+ .nav { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 6px 0 28px; }
55
+ .brand { display: inline-flex; align-items: center; gap: 12px; font-weight: 800; text-decoration: none; }
56
+ .brand img { width: 28px; height: 28px; }
57
+ .navlinks { display: flex; gap: 18px; flex-wrap: wrap; color: var(--muted); font-size: 14px; }
58
+ .navlinks a { text-decoration: none; }
59
+ .hero {
60
+ display: grid;
61
+ grid-template-columns: minmax(0, 1.04fr) minmax(320px, 0.96fr);
62
+ gap: 28px;
63
+ align-items: stretch;
64
+ padding: 34px 0 26px;
65
+ }
66
+ .eyebrow { color: var(--cyan); font-size: 13px; font-weight: 800; text-transform: uppercase; margin-bottom: 14px; }
67
+ h1 { font-size: clamp(42px, 6vw, 72px); line-height: 0.98; margin: 0 0 18px; letter-spacing: 0; max-width: 740px; }
68
+ .lead { color: var(--muted); font-size: 19px; line-height: 1.58; max-width: 720px; margin: 0 0 24px; }
69
+ .actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 24px 0; }
70
+ .btn {
71
+ display: inline-flex;
72
+ align-items: center;
73
+ justify-content: center;
74
+ min-height: 46px;
75
+ padding: 0 18px;
76
+ border-radius: 8px;
77
+ border: 1px solid var(--line);
78
+ background: var(--panel);
79
+ color: var(--text);
80
+ text-decoration: none;
81
+ font-weight: 800;
82
+ font-size: 14px;
83
+ white-space: nowrap;
84
+ }
85
+ .btn.primary { background: var(--cyan); color: #001316; border-color: var(--cyan); }
86
+ .btn.secondary { border-color: rgba(32, 216, 239, 0.55); color: var(--cyan); }
87
+ .proof {
88
+ display: flex;
89
+ flex-wrap: wrap;
90
+ gap: 10px;
91
+ margin-top: 22px;
92
+ color: var(--muted);
93
+ font-size: 13px;
94
+ }
95
+ .pill { border: 1px solid var(--line); border-radius: 999px; padding: 7px 10px; background: rgba(255,255,255,0.03); }
96
+ .panel {
97
+ border: 1px solid var(--line);
98
+ border-radius: 8px;
99
+ background: var(--panel);
100
+ overflow: hidden;
101
+ min-width: 0;
102
+ }
103
+ .panel-head {
104
+ display: flex;
105
+ justify-content: space-between;
106
+ gap: 12px;
107
+ border-bottom: 1px solid var(--line);
108
+ padding: 13px 14px;
109
+ color: var(--muted);
110
+ font-size: 13px;
111
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
112
+ }
113
+ .screen { padding: 16px; display: grid; gap: 12px; }
114
+ .message {
115
+ background: var(--panel-2);
116
+ border: 1px solid var(--line);
117
+ border-radius: 8px;
118
+ padding: 14px;
119
+ font-size: 14px;
120
+ line-height: 1.55;
121
+ }
122
+ .message strong { color: var(--green); }
123
+ .code {
124
+ display: block;
125
+ background: #07090b;
126
+ border: 1px solid #222932;
127
+ border-radius: 8px;
128
+ padding: 13px;
129
+ overflow-x: auto;
130
+ color: #d8f7ff;
131
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
132
+ font-size: 13px;
133
+ line-height: 1.55;
134
+ }
135
+ section { padding: 34px 0; }
136
+ .section-title { font-size: 28px; margin: 0 0 12px; letter-spacing: 0; }
137
+ .section-copy { margin: 0 0 20px; color: var(--muted); line-height: 1.65; max-width: 840px; }
138
+ .grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
139
+ .card {
140
+ border: 1px solid var(--line);
141
+ border-radius: 8px;
142
+ background: var(--panel);
143
+ padding: 18px;
144
+ min-width: 0;
145
+ }
146
+ .card h3 { margin: 0 0 10px; font-size: 18px; letter-spacing: 0; }
147
+ .card p, .card li { color: var(--muted); line-height: 1.6; font-size: 14px; }
148
+ .card ul { padding-left: 18px; margin: 0; }
149
+ .steps { counter-reset: step; display: grid; gap: 12px; }
150
+ .step {
151
+ display: grid;
152
+ grid-template-columns: 46px minmax(0, 1fr);
153
+ gap: 14px;
154
+ align-items: start;
155
+ border: 1px solid var(--line);
156
+ border-radius: 8px;
157
+ background: var(--panel);
158
+ padding: 16px;
159
+ }
160
+ .step::before {
161
+ counter-increment: step;
162
+ content: counter(step);
163
+ display: grid;
164
+ place-items: center;
165
+ width: 34px;
166
+ height: 34px;
167
+ border-radius: 8px;
168
+ background: rgba(32, 216, 239, 0.12);
169
+ color: var(--cyan);
170
+ border: 1px solid rgba(32, 216, 239, 0.4);
171
+ font-weight: 900;
172
+ }
173
+ .step h3 { margin: 2px 0 7px; font-size: 17px; }
174
+ .step p { color: var(--muted); margin: 0; line-height: 1.6; }
175
+ .notice {
176
+ border: 1px solid rgba(255, 209, 102, 0.45);
177
+ background: rgba(255, 209, 102, 0.08);
178
+ color: #fff0bf;
179
+ border-radius: 8px;
180
+ padding: 15px 16px;
181
+ line-height: 1.6;
182
+ margin-top: 18px;
183
+ }
184
+ footer { color: var(--muted); border-top: 1px solid var(--line); padding-top: 24px; margin-top: 24px; font-size: 14px; }
185
+ @media (max-width: 860px) {
186
+ .hero { grid-template-columns: 1fr; }
187
+ .grid { grid-template-columns: 1fr; }
188
+ .nav { align-items: flex-start; flex-direction: column; }
189
+ h1 { font-size: 44px; }
190
+ .btn { width: 100%; }
191
+ }
192
+ </style>
193
+ </head>
194
+ <body>
195
+ <main class="shell">
196
+ <nav class="nav" aria-label="Primary">
197
+ <a class="brand" href="/">
198
+ <img src="/assets/brand/thumbgate-mark-inline-v3.svg" alt="ThumbGate logo">
199
+ <span>ThumbGate</span>
200
+ </a>
201
+ <div class="navlinks">
202
+ <a href="/codex-plugin">Codex plugin</a>
203
+ <a href="/guide">Install</a>
204
+ <a href="/pricing">Pricing</a>
205
+ <a href="https://github.com/IgorGanapolsky/ThumbGate" rel="noopener">GitHub</a>
206
+ </div>
207
+ </nav>
208
+
209
+ <section class="hero" aria-labelledby="chatgpt-title">
210
+ <div>
211
+ <div class="eyebrow">ChatGPT surface for ThumbGate</div>
212
+ <h1 id="chatgpt-title">ThumbGate for ChatGPT</h1>
213
+ <p class="lead">Use the live ThumbGate GPT to preflight risky agent actions, capture typed thumbs-up/down lessons, and route those lessons into local enforcement for Codex, Claude Code, Cursor, Gemini CLI, and MCP-compatible agents.</p>
214
+ <div class="actions">
215
+ <a class="btn primary" href="/go/gpt?utm_source=chatgpt_app&utm_medium=landing&utm_campaign=chatgpt_app_install&cta_id=chatgpt_app_open_gpt&cta_placement=hero" target="_blank" rel="noopener">Open ThumbGate GPT</a>
216
+ <a class="btn secondary" href="/openapi.yaml?utm_source=chatgpt_app&utm_medium=landing&utm_campaign=chatgpt_action_schema&cta_id=chatgpt_app_openapi&cta_placement=hero">Download GPT Action schema</a>
217
+ <a class="btn" href="/guide?utm_source=chatgpt_app&utm_medium=landing&utm_campaign=local_enforcement&cta_id=chatgpt_app_local_install&cta_placement=hero">Install local enforcement</a>
218
+ </div>
219
+ <div class="proof" aria-label="Current proof">
220
+ <span class="pill">Live GPT link: /go/gpt</span>
221
+ <span class="pill">Action schema: /openapi.yaml</span>
222
+ <span class="pill">Local gate: npx thumbgate init</span>
223
+ </div>
224
+ </div>
225
+
226
+ <div class="panel" aria-label="ThumbGate ChatGPT workflow preview">
227
+ <div class="panel-head">
228
+ <span>ChatGPT + ThumbGate</span>
229
+ <span>typed feedback -> rules</span>
230
+ </div>
231
+ <div class="screen">
232
+ <div class="message">Before I run this migration, check whether this repeats a rejected deploy pattern.</div>
233
+ <div class="message"><strong>ThumbGate:</strong> Require evidence first: test output, rollback path, and the exact affected tables. Then install the local gate so future risky actions are flagged and logged before execution (and hard-blocked for catastrophic classes or under strict mode).</div>
234
+ <code class="code">thumbs down: agent claimed the release was published before checking npm and CI</code>
235
+ <code class="code">npx thumbgate init --agent codex</code>
236
+ </div>
237
+ </div>
238
+ </section>
239
+
240
+ <section aria-labelledby="what-ships">
241
+ <h2 class="section-title" id="what-ships">What ships today</h2>
242
+ <p class="section-copy">This is the ChatGPT-facing distribution page. It keeps the claim precise: ChatGPT is the discovery, advice, checkpointing, and typed-feedback surface. The enforcement — flag and log by default, hard-block for catastrophic classes or under strict mode — still runs in the local agent or CI lane.</p>
243
+ <div class="grid">
244
+ <article class="card">
245
+ <h3>Live GPT entrypoint</h3>
246
+ <p>The public GPT lets users paste proposed actions, risky commands, PR steps, deploys, refunds, and agent plans before running them.</p>
247
+ </article>
248
+ <article class="card">
249
+ <h3>GPT Action schema</h3>
250
+ <p>The OpenAPI schema is publicly served for GPT Actions import and kept in the package so installs do not depend on hidden docs.</p>
251
+ </article>
252
+ <article class="card">
253
+ <h3>Local enforcement path</h3>
254
+ <p>ThumbGate still flags repeated mistakes where work happens — and hard-blocks the catastrophic ones (or any rule under strict mode): Codex, Claude Code, Cursor, Gemini CLI, Amp, OpenCode, MCP, and CI.</p>
255
+ </article>
256
+ </div>
257
+ </section>
258
+
259
+ <section aria-labelledby="install-flow">
260
+ <h2 class="section-title" id="install-flow">Install flow</h2>
261
+ <div class="steps">
262
+ <div class="step">
263
+ <div>
264
+ <h3>Open the ThumbGate GPT</h3>
265
+ <p>Use the GPT for setup help, action review, and typed feedback. If the direct link does not open, search Explore GPTs for ThumbGate by Igor Ganapolsky.</p>
266
+ </div>
267
+ </div>
268
+ <div class="step">
269
+ <div>
270
+ <h3>Import the GPT Action schema when configuring a custom GPT</h3>
271
+ <p>Use <code>https://thumbgate.ai/openapi.yaml</code> as the Actions schema. API key auth uses a bearer token from the ThumbGate environment.</p>
272
+ </div>
273
+ </div>
274
+ <div class="step">
275
+ <div>
276
+ <h3>Install the local gate</h3>
277
+ <p>Run <code>npx thumbgate init</code> or the agent-specific command so lessons can become pre-action checks in the coding session.</p>
278
+ </div>
279
+ </div>
280
+ </div>
281
+ <div class="notice"><strong>Honest capture note:</strong> ChatGPT's native thumbs rating buttons are not the ThumbGate memory path. Type <code>thumbs up:</code> or <code>thumbs down:</code> with one concrete sentence so ThumbGate can store a structured lesson.</div>
282
+ </section>
283
+
284
+ <section aria-labelledby="enterprise">
285
+ <h2 class="section-title" id="enterprise">Enterprise packaging</h2>
286
+ <p class="section-copy">Teams can use ChatGPT as the human-facing review surface while ThumbGate enforces policy in the local or server-side execution lane. That gives buyers a simple story: one GPT for triage, one Codex plugin for coding, one shared lesson/rule store for repeat prevention.</p>
287
+ <div class="grid">
288
+ <article class="card">
289
+ <h3>Buyer-ready links</h3>
290
+ <ul>
291
+ <li><a href="/chatgpt-app">ChatGPT app page</a></li>
292
+ <li><a href="/codex-plugin">Codex plugin page</a></li>
293
+ <li><a href="/pricing">Team pricing</a></li>
294
+ </ul>
295
+ </article>
296
+ <article class="card">
297
+ <h3>Implementation docs</h3>
298
+ <ul>
299
+ <li><a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/adapters/chatgpt/INSTALL.md" rel="noopener">ChatGPT Actions setup</a></li>
300
+ <li><a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/chatgpt-gpt-instructions.md" rel="noopener">GPT instructions</a></li>
301
+ <li><a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/plugins/codex-profile/INSTALL.md" rel="noopener">Codex plugin install</a></li>
302
+ </ul>
303
+ </article>
304
+ <article class="card">
305
+ <h3>Proof lane</h3>
306
+ <ul>
307
+ <li><a href="/dashboard">Local dashboard</a></li>
308
+ <li><a href="/llm-context.md">LLM context</a></li>
309
+ <li><a href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest" rel="noopener">Latest release assets</a></li>
310
+ </ul>
311
+ </article>
312
+ </div>
313
+ </section>
314
+
315
+ <section aria-labelledby="next-step">
316
+ <h2 class="section-title" id="next-step">Use both OpenAI surfaces</h2>
317
+ <p class="section-copy">Codex gets the execution-side plugin. ChatGPT gets the review and lesson-capture entrypoint. Together they make ThumbGate visible before the mistake and enforceable when the agent reaches for tools.</p>
318
+ <div class="actions">
319
+ <a class="btn primary" href="/go/gpt?utm_source=chatgpt_app&utm_medium=landing&utm_campaign=chatgpt_app_install&cta_id=chatgpt_app_footer_gpt&cta_placement=footer" target="_blank" rel="noopener">Open ThumbGate GPT</a>
320
+ <a class="btn secondary" href="/codex-plugin?utm_source=chatgpt_app&utm_medium=landing&utm_campaign=codex_plugin_cross_sell&cta_id=chatgpt_app_footer_codex&cta_placement=footer">Install Codex plugin</a>
321
+ <a class="btn" href="/checkout/pro?utm_source=chatgpt_app&utm_medium=landing&utm_campaign=chatgpt_app_pro&cta_id=chatgpt_app_footer_checkout&cta_placement=footer">Upgrade to Pro</a>
322
+ </div>
323
+ </section>
324
+
325
+ <footer>
326
+ ThumbGate for ChatGPT is an owned ThumbGate distribution surface. It does not claim official OpenAI marketplace approval; it links the live GPT, public GPT Action schema, and local enforcement install path.
327
+ </footer>
328
+ </main>
329
+ </body>
330
+ </html>
@@ -0,0 +1,123 @@
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>ThumbGate for Codex in the Enterprise — Governance for OpenAI Codex (Dell-Distributed or Self-Hosted)</title>
7
+ <script defer data-domain="thumbgate.ai" src="https://plausible.io/js/script.js"></script>
8
+ <meta name="description" content="OpenAI and Dell are distributing Codex into the enterprise. Codex in production needs a governance layer — capture every agent decision, promote repeat failures to PreToolUse gates, ship the audit trail procurement requires.">
9
+ <meta property="og:title" content="ThumbGate for Codex in the Enterprise">
10
+ <meta property="og:description" content="Dell-distributed or self-hosted, Codex agents repeat the same mistakes. ThumbGate is the governance layer underneath — capture, promote, audit.">
11
+ <meta property="og:type" content="article">
12
+ <meta property="og:image" content="https://thumbgate.ai/og.png">
13
+ <link rel="canonical" href="https://thumbgate.ai/codex-enterprise">
14
+ <script type="application/ld+json">
15
+ {
16
+ "@context": "https://schema.org",
17
+ "@type": "TechArticle",
18
+ "headline": "ThumbGate for Codex in the Enterprise",
19
+ "description": "Dell-distributed or self-hosted, Codex agents in production need a governance layer. ThumbGate captures every agent decision, promotes repeat failures to PreToolUse gates, and ships the audit trail enterprise procurement requires.",
20
+ "datePublished": "2026-05-20",
21
+ "dateModified": "2026-05-20",
22
+ "author": { "@type": "Person", "name": "Igor Ganapolsky", "url": "https://github.com/IgorGanapolsky" },
23
+ "publisher": { "@type": "Organization", "name": "ThumbGate", "url": "https://thumbgate.ai" },
24
+ "about": [
25
+ { "@type": "Thing", "name": "OpenAI Codex" },
26
+ { "@type": "Thing", "name": "Dell Codex Enterprise" },
27
+ { "@type": "Thing", "name": "Agent Governance" },
28
+ { "@type": "Thing", "name": "PreToolUse Gates" }
29
+ ]
30
+ }
31
+ </script>
32
+ <style>
33
+ *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
34
+ :root { --bg:#0a0a0b; --card:#161618; --border:#222225; --text:#e8e8ec; --muted:#8b8b94; --cyan:#22d3ee; }
35
+ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: var(--bg); color: var(--text); line-height: 1.7; }
36
+ .container { max-width: 860px; margin: 0 auto; padding: 2rem 1.5rem 4rem; }
37
+ nav { padding: 1rem 2rem; border-bottom: 1px solid var(--border); display:flex; gap:1.5rem; flex-wrap:wrap; }
38
+ nav a { color: var(--muted); text-decoration:none; font-size:0.9rem; }
39
+ nav .brand { color: var(--text); font-weight:700; }
40
+ .pill { display:inline-block; font-size:0.75rem; letter-spacing:0.08em; text-transform:uppercase; color:var(--cyan); background:rgba(34,211,238,0.08); border:1px solid rgba(34,211,238,0.2); padding:4px 12px; border-radius:100px; margin-top:1.5rem; font-weight:600; }
41
+ h1 { font-size:2.2rem; line-height:1.15; margin:1rem 0 1rem; }
42
+ h2 { font-size:1.45rem; margin:2.2rem 0 1rem; color:var(--cyan); }
43
+ h3 { margin:0.6rem 0; font-size:1rem; }
44
+ p, li { margin-bottom:0.75rem; }
45
+ ul, ol { padding-left:1.25rem; }
46
+ .card { background: var(--card); border:1px solid var(--border); border-radius:12px; padding:1.25rem; margin:1rem 0; }
47
+ .grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:1rem; margin:1rem 0; }
48
+ .grid .card h3 { color:var(--cyan); }
49
+ .cta { display:inline-block; background:var(--cyan); color:#000; padding:0.8rem 1.2rem; border-radius:8px; text-decoration:none; font-weight:700; }
50
+ .secondary { color:var(--cyan); text-decoration:underline; margin-left:1rem; }
51
+ .quote { border-left:3px solid var(--cyan); padding:0.75rem 1rem; margin:1rem 0; color:var(--muted); font-style:italic; }
52
+ code, pre { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; background:#0f0f11; border:1px solid var(--border); border-radius:6px; padding:0.15rem 0.4rem; font-size:0.9rem; }
53
+ pre { padding:0.85rem 1rem; overflow-x:auto; }
54
+ .footer-links { margin-top:2.5rem; padding-top:1.25rem; border-top:1px solid var(--border); color:var(--muted); font-size:0.9rem; }
55
+ .footer-links a { color:var(--cyan); text-decoration:none; }
56
+ </style>
57
+ </head>
58
+ <body>
59
+ <nav>
60
+ <a href="/" class="brand">ThumbGate</a>
61
+ <a href="/guide">Guide</a>
62
+ <a href="/agent-manager">Agent Manager</a>
63
+ <a href="/codex-plugin">Codex plugin</a>
64
+ <a href="/dashboard">Dashboard demo</a>
65
+ <a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub</a>
66
+ </nav>
67
+ <div class="container">
68
+ <span class="pill">Codex in the Enterprise</span>
69
+ <h1>Codex in production needs a governance layer. Dell-distributed or self-hosted, agents repeat the same mistakes.</h1>
70
+ <p>OpenAI and Dell <a href="https://openai.com/index/dell-codex-enterprise-partnership/" target="_blank" rel="noopener" style="color:var(--cyan)">just announced</a> a partnership to distribute Codex into the enterprise — Dell PCs, Dell servers, and Dell's enterprise sales motion become a delivery channel for OpenAI's coding agent. Codex's addressable market jumps from individual developer install to org-wide procurement. The governance gap jumps with it: every enterprise that turns Codex on now needs a runtime layer that captures what the agent did, flags the repeat failures (and hard-blocks the catastrophic ones, or any rule under strict enforcement), and produces the audit trail their security review will ask for.</p>
71
+ <p>ThumbGate already ships a <a href="/codex-plugin">Codex plugin</a>. The free CLI is real, MIT-licensed, and the gates work locally without a hosted account. This page is what that plugin maps to once Codex is no longer one developer's experiment but a procurement line item.</p>
72
+
73
+ <h2>What the governance layer ships</h2>
74
+ <div class="grid">
75
+ <div class="card">
76
+ <h3>Capture every agent decision as it happens</h3>
77
+ <p>The Thariq pattern — running implementation notes that record decisions, assumptions (marked VERIFIED or UNVERIFIED), tradeoffs, and corrections — productionized as a Codex hook. Every multi-step task gets a structured journal you can review async without re-reading the entire transcript.</p>
78
+ </div>
79
+ <div class="card">
80
+ <h3>Promote repeat failures to PreToolUse gates</h3>
81
+ <p>When the same agent mistake shows up twice, ThumbGate distills it into a prevention rule and flags the next attempt at the tool-call boundary — hard-blocking it for catastrophic classes or under strict enforcement — with the rule that fired in the agent's reasoning trace, so Codex chooses a safer plan instead of being told to "be more careful."</p>
82
+ </div>
83
+ <div class="card">
84
+ <h3>Audit trail enterprise procurement requires</h3>
85
+ <p>Per-tool-call evidence, per-rule provenance, exportable for SOC 2 / ISO 27001 / EU AI Act review. The hosted dashboard rolls this up across repos so the Agent Manager role has one surface instead of N developer machines.</p>
86
+ </div>
87
+ </div>
88
+
89
+ <h2>Why this matters now</h2>
90
+ <p>The Dell distribution channel changes who buys Codex. The individual-developer install is opt-in; the enterprise procurement install is policy-driven. The teams approving the Codex line item will ask three questions ThumbGate is built to answer:</p>
91
+ <ol>
92
+ <li><strong>What did the agent do?</strong> — capture, with evidence, on every tool call.</li>
93
+ <li><strong>What did we stop it from doing?</strong> — PreToolUse gates with the rule that fired and why.</li>
94
+ <li><strong>How do you keep this current as Codex updates?</strong> — adapter matrix that's CI-checked against upstream.</li>
95
+ </ol>
96
+ <div class="quote">"Dell-distributed Codex into the enterprise is the moment governance moves from optional to procurement-required. The runtime that captures, blocks, and audits is the line item underneath the line item."</div>
97
+
98
+ <h2>Install</h2>
99
+ <p>One repo, one command:</p>
100
+ <pre><code>npx thumbgate init --agent codex</code></pre>
101
+ <p>This wires the Codex hook, sets up the local lesson DB, and gives you the capture/promote/block loop without a hosted account. If you want the standalone Codex plugin as a self-contained zip — for offline distribution to Dell-managed machines or for security review — grab it from <a href="https://github.com/IgorGanapolsky/ThumbGate/releases" target="_blank" rel="noopener" style="color:var(--cyan)">GitHub releases</a> (look for <code>codex-plugin-*.zip</code>).</p>
102
+
103
+ <div class="card">
104
+ <p><strong>The free CLI is real. Pro adds the personal dashboard, recall, exports, and managed adapters. Enterprise is the hosted dashboard, the org-wide rule library, and the operator the Agent Manager doesn't have to be themselves.</strong></p>
105
+ <p>
106
+ <a href="/#workflow-sprint-intake?utm_source=website&amp;utm_medium=codex_enterprise_page&amp;utm_campaign=codex_enterprise_sprint&amp;cta_id=codex_enterprise_sprint_intake&amp;cta_placement=codex_enterprise_page" class="cta">Start the Workflow Hardening Sprint</a>
107
+ <a href="/checkout/pro?utm_source=website&amp;utm_medium=codex_enterprise_page&amp;utm_campaign=pro_upgrade&amp;cta_id=codex_enterprise_pro_checkout&amp;cta_placement=codex_enterprise_page&amp;plan_id=pro" class="secondary">Or start Pro at $19/mo →</a>
108
+ </p>
109
+ </div>
110
+
111
+ <h2>Related reading</h2>
112
+ <ul>
113
+ <li><a href="/agent-manager">ThumbGate for the Agent Manager</a> — the role inside the enterprise that owns Codex rollout policy.</li>
114
+ <li><a href="/codex-plugin">Codex plugin overview</a> — the standalone plugin surface this page rides on top of.</li>
115
+ <li><a href="/compare">Compare</a> — how governance compares to orchestration suites under the same Codex install.</li>
116
+ </ul>
117
+
118
+ <div class="footer-links">
119
+ Built for teams who turned on Codex and discovered "tell the model to be more careful" doesn't scale. See also <a href="/agent-manager">/agent-manager</a> for the role-level framing.
120
+ </div>
121
+ </div>
122
+ </body>
123
+ </html>
@@ -224,7 +224,7 @@
224
224
  <section class="hero">
225
225
  <div class="wrap">
226
226
  <div class="eyebrow">Codex MCP plugin + Pre-Action Checks</div>
227
- <h1>Give Codex a thumbs-down once. Block the repeat before it runs again.</h1>
227
+ <h1>Give Codex a thumbs-down once. Catch the repeat before it runs again.</h1>
228
228
  <p class="sub" style="font-size:13px;opacity:0.85;">Updated: <time datetime="2026-04-20">2026-04-20</time> · by <a href="https://github.com/IgorGanapolsky" style="color:inherit;">Igor Ganapolsky</a></p>
229
229
  <p class="sub">ThumbGate wires Codex into local-first feedback memory, MCP tools, and hook enforcement. The launcher resolves <code>thumbgate@latest</code> when Codex starts, so published npm fixes reach your active MCP server after a restart.</p>
230
230
  <div class="actions">
@@ -235,7 +235,7 @@
235
235
  <nav class="proof-bar" aria-label="Codex proof and conversion links">
236
236
  <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/VERIFICATION_EVIDENCE.md" target="_blank" rel="noopener">Verification evidence</a>
237
237
  <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/COMMERCIAL_TRUTH.md" target="_blank" rel="noopener">Commercial truth</a>
238
- <a href="/checkout/pro?utm_source=codex&utm_medium=plugin_page&utm_campaign=codex_plugin_follow_on&utm_content=pro&campaign_variant=pro_follow_on&offer_code=CODEX-PRO_FOLLOW_ON&cta_id=codex_pro_follow_on&cta_placement=plugin_page&plan_id=pro&surface=codex_plugin">Upgrade after one blocked repeat</a>
238
+ <a href="/checkout/pro?utm_source=codex&utm_medium=plugin_page&utm_campaign=codex_plugin_follow_on&utm_content=pro&campaign_variant=pro_follow_on&offer_code=CODEX-PRO_FOLLOW_ON&cta_id=codex_pro_follow_on&cta_placement=plugin_page&plan_id=pro&surface=codex_plugin">Upgrade after one caught repeat</a>
239
239
  <a href="/?utm_source=codex&utm_medium=plugin_page&utm_campaign=codex_team_follow_on&utm_content=workflow_sprint&campaign_variant=teams_follow_on&offer_code=CODEX-TEAMS_FOLLOW_ON&cta_id=codex_team_follow_on&cta_placement=plugin_page&surface=codex_plugin#workflow-sprint-intake">Team workflow sprint</a>
240
240
  </nav>
241
241
  <pre class="terminal">$ npx thumbgate init --agent codex
@@ -255,8 +255,8 @@ $ npx thumbgate feedback-self-test
255
255
  <p>The Codex launcher installs <code>thumbgate@latest</code> into <code>~/.thumbgate/runtime</code> before running MCP or gate checks. A new npm publish reaches Codex after the app restarts.</p>
256
256
  </div>
257
257
  <div class="tile">
258
- <h3>Hard stop before action</h3>
259
- <p>Pre-Action Checks evaluate commands, file edits, publishes, merges, and other high-risk actions before execution. Bad repeats get blocked before they burn time or tokens.</p>
258
+ <h3>Checks before action</h3>
259
+ <p>Pre-Action Checks evaluate commands, file edits, publishes, merges, and other high-risk actions before execution. Bad repeats are flagged and logged before they burn time or tokens — and hard-blocked for catastrophic classes (secret exfiltration, destructive deletes) or when strict enforcement is enabled.</p>
260
260
  </div>
261
261
  </section>
262
262
 
@@ -334,7 +334,7 @@ $ npx thumbgate feedback-self-test
334
334
  <section class="wrap grid" aria-label="Proof-backed next steps">
335
335
  <div class="tile">
336
336
  <h3>Pro only after proof</h3>
337
- <p>Use the free Codex path to prove one real blocked repeat first. Upgrade to Pro only when you want the personal dashboard, proof-ready exports, and a review surface after that proof exists.</p>
337
+ <p>Use the free Codex path to prove one real caught repeat first. Upgrade to Pro only when you want the personal dashboard, proof-ready exports, and a review surface after that proof exists.</p>
338
338
  </div>
339
339
  <div class="tile">
340
340
  <h3>Commercial truth stays inspectable</h3>
@@ -46,7 +46,7 @@
46
46
  "name": "What is a pre-action check for AI coding agents?",
47
47
  "acceptedAnswer": {
48
48
  "@type": "Answer",
49
- "text": "A pre-action check is an enforcement layer that intercepts AI agent tool calls before they execute. Unlike prompt rules that agents can ignore, pre-action checks physically block dangerous actions such as force-pushing to main, deleting production files, or committing code with failing tests. ThumbGate implements pre-action checks via PreToolUse hooks that fire before every tool call."
49
+ "text": "A pre-action check is an enforcement layer that intercepts AI agent tool calls before they execute. Unlike prompt rules that agents can ignore, pre-action checks flag and log risky actions, and hard-block the most dangerous classes by default (secret exfiltration, supply-chain installs, and rm -rf-class deletes). Actions such as force-pushing to main, off-scope edits, or skipping tests warn by default and hard-block under strict enforcement mode (THUMBGATE_STRICT_ENFORCEMENT=1). ThumbGate implements pre-action checks via PreToolUse hooks that fire before every tool call."
50
50
  }
51
51
  },
52
52
  {
@@ -62,7 +62,7 @@
62
62
  "name": "Is ThumbGate free?",
63
63
  "acceptedAnswer": {
64
64
  "@type": "Answer",
65
- "text": "ThumbGate has a free tier that includes local enforcement with 2 feedback captures/day, 10 total captures, up to 3 active auto-promoted prevention rules, and pre-action check blocking. Pro ($19/mo or $149/yr) adds hosted sync, a personal local dashboard, recall, lesson search, unlimited captures/rules, and DPO export. Enterprise (custom pricing, scoped after intake) adds a shared lesson database and org dashboard."
65
+ "text": "ThumbGate free includes local enforcement with 2 captures/day, 10 total captures, 3 active auto-promoted prevention rules, and pre-action blocking. Pro ($19/mo or $149/yr) adds personal recall, search, a local dashboard, managed adapters, unlimited captures/rules, and DPO export. Enterprise adds a shared hosted lesson DB and org dashboard."
66
66
  }
67
67
  },
68
68
  {
@@ -70,7 +70,7 @@
70
70
  "name": "How is ThumbGate different from .cursorrules or CLAUDE.md rules?",
71
71
  "acceptedAnswer": {
72
72
  "@type": "Answer",
73
- "text": "Cursor rules and CLAUDE.md are prompt-level instructions that the AI agent can read, forget, or override. ThumbGate enforces rules at the tool-call level via PreToolUse hooks. When a tool call matches a known failure pattern, it is physically blocked before execution. Additionally, ThumbGate auto-generates prevention rules from feedback, so you never have to write rules manually."
73
+ "text": "Cursor rules and CLAUDE.md are prompt-level instructions that the AI agent can read, forget, or override. ThumbGate enforces rules at the tool-call level via PreToolUse hooks. When a tool call matches a known failure pattern, it is flagged and logged, and hard-blocked before execution for the most dangerous classes or under strict enforcement mode. Additionally, ThumbGate auto-generates prevention rules from feedback, so you never have to write rules manually."
74
74
  }
75
75
  },
76
76
  {
@@ -161,8 +161,8 @@
161
161
  <th>ESLint / Linters</th>
162
162
  </tr>
163
163
  <tr>
164
- <td>Blocks bad actions before execution</td>
165
- <td class="yes">Yes -- PreToolUse hooks</td>
164
+ <td>Intercepts bad actions before execution</td>
165
+ <td class="yes">Yes -- PreToolUse hooks warn by default; hard-block high-risk classes and strict mode</td>
166
166
  <td class="partial">Partially -- after PR only</td>
167
167
  <td class="no">No -- damage already done</td>
168
168
  <td class="partial">Partially -- suggestions only</td>
@@ -237,7 +237,7 @@
237
237
 
238
238
  <h2>Why ThumbGate Wins</h2>
239
239
  <ul>
240
- <li><strong>Enforcement, not suggestions.</strong> Prompt rules in CLAUDE.md or .cursorrules are instructions the agent can ignore. ThumbGate intercepts tool calls at the PreToolUse hook level and physically blocks dangerous actions before they execute.</li>
240
+ <li><strong>Enforcement, not suggestions.</strong> Prompt rules in CLAUDE.md or .cursorrules are instructions the agent can ignore. ThumbGate intercepts tool calls at the PreToolUse hook level, flags and logs risky actions, and hard-blocks the most dangerous classes (secret exfiltration, supply-chain installs, rm -rf-class deletes) before they execute — with force-push, off-scope edits, and skip-tests escalated to hard blocks under strict enforcement mode.</li>
241
241
  <li><strong>Learns and adapts automatically.</strong> Every thumbs-down becomes a data point. After repeated failures with the same pattern, ThumbGate auto-generates a prevention rule. Checks adapt their sensitivity over time using Thompson Sampling -- aggressive checks that over-block get tuned down, effective checks get reinforced.</li>
242
242
  <li><strong>Works across all major AI coding agents.</strong> One install command covers Claude Code, Cursor, Codex, Gemini CLI, Amp, Cline, and OpenCode. No per-agent configuration needed.</li>
243
243
  <li><strong>Prevention is cheaper than recovery.</strong> Manual code review catches mistakes after the PR. Git revert catches them after the push. ThumbGate catches them before the tool call executes -- saving the time, context switches, and cleanup cost of undoing damage.</li>
@@ -271,7 +271,7 @@
271
271
  <p style="color:var(--muted);">Every head-to-head in one place. ThumbGate is the local-first, learning enforcement layer at the tool-call boundary — most of these tools sit at a different layer and are complementary.</p>
272
272
  <ul class="compare-index">
273
273
  <li><a href="/compare/sigmashake">ThumbGate vs SigmaShake</a> — learns the rule from your thumbs-down vs a hand-picked ruleset hub</li>
274
- <li><a href="/compare/claude-code-hooks">ThumbGate vs claude-code-hooks</a> — hosted sync &amp; learning on top of local shell-script hooks</li>
274
+ <li><a href="/compare/claude-code-hooks">ThumbGate vs claude-code-hooks</a> — personal recall, exports, and managed adapters on top of local shell-script hooks</li>
275
275
  <li><a href="/compare/arcjet">ThumbGate vs Arcjet</a> — agent-outbound gate pairs with an app-inbound firewall</li>
276
276
  <li><a href="/compare/bumblebee">ThumbGate vs Bumblebee</a> — runtime enforcement pairs with static inventory</li>
277
277
  <li><a href="/compare/anthropic-containment">ThumbGate vs Anthropic's Claude Containment</a> — an IDE-agent extension of Anthropic's published architecture</li>
@@ -324,7 +324,7 @@
324
324
 
325
325
  <div class="card">
326
326
  <h3>What is a pre-action check?</h3>
327
- <p>A pre-action check is an enforcement layer that intercepts AI agent tool calls before they execute. Unlike prompt rules that agents can ignore, pre-action checks physically block dangerous actions such as force-pushing to main, deleting production files, or committing code with failing tests.</p>
327
+ <p>A pre-action check is an enforcement layer that intercepts AI agent tool calls before they execute. Unlike prompt rules that agents can ignore, pre-action checks flag and log risky actions and hard-block the most dangerous classes by default (secret exfiltration, supply-chain installs, rm -rf-class deletes). Actions such as force-pushing to main, off-scope edits, or skipping tests warn by default and hard-block under strict enforcement mode.</p>
328
328
  </div>
329
329
 
330
330
  <div class="card">
@@ -334,12 +334,12 @@
334
334
 
335
335
  <div class="card">
336
336
  <h3>Is ThumbGate free?</h3>
337
- <p>ThumbGate has a free tier that includes local enforcement with 2 feedback captures/day, 10 total captures, up to 3 active auto-promoted prevention rules, and pre-action check blocking. Pro ($19/mo or $149/yr) adds hosted sync, a personal local dashboard, recall, lesson search, unlimited captures/rules, and DPO export. Enterprise (custom pricing, scoped after intake) adds a shared lesson database and org dashboard.</p>
337
+ <p>ThumbGate free includes local enforcement with 2 captures/day, 10 total captures, 3 active auto-promoted prevention rules, and pre-action blocking. Pro ($19/mo or $149/yr) adds personal recall, search, a local dashboard, managed adapters, unlimited captures/rules, and DPO export. Enterprise adds a shared hosted lesson DB and org dashboard.</p>
338
338
  </div>
339
339
 
340
340
  <div class="card">
341
341
  <h3>How is ThumbGate different from .cursorrules or CLAUDE.md rules?</h3>
342
- <p>Cursor rules and CLAUDE.md are prompt-level instructions that the AI agent can read, forget, or override. ThumbGate enforces rules at the tool-call level via PreToolUse hooks. When a tool call matches a known failure pattern, it is physically blocked before execution. Additionally, ThumbGate auto-generates prevention rules from feedback -- no manual rule writing.</p>
342
+ <p>Cursor rules and CLAUDE.md are prompt-level instructions that the AI agent can read, forget, or override. ThumbGate enforces rules at the tool-call level via PreToolUse hooks. When a tool call matches a known failure pattern, it is flagged and logged, and hard-blocked before execution for the most dangerous classes or under strict enforcement mode. Additionally, ThumbGate auto-generates prevention rules from feedback -- no manual rule writing.</p>
343
343
  </div>
344
344
 
345
345
  <div class="card">
@@ -756,7 +756,7 @@
756
756
  <div><span style="color:var(--green);">👍 "chosen"</span> — the response that worked</div>
757
757
  <div><span style="color:var(--red);">👎 "rejected"</span> — the response that failed</div>
758
758
  </div>
759
- <p style="color:var(--text-muted);font-size:14px;line-height:1.65;">Use these pairs to fine-tune any model (OpenAI, Llama, Mistral) so it <strong style="color:var(--text);">actually learns from your corrections</strong> — not just blocks mistakes, but stops making them.</p>
759
+ <p style="color:var(--text-muted);font-size:14px;line-height:1.65;">Use these pairs to fine-tune any model (OpenAI, Llama, Mistral) so it <strong style="color:var(--text);">actually learns from your corrections</strong> — not just flags mistakes at the gate, but stops making them.</p>
760
760
  </div>
761
761
  <button class="export-btn" onclick="exportDpo()">📥 Download DPO Pairs (JSON)</button>
762
762
  <div id="exportStatus" style="margin-top:12px;font-size:13px;color:var(--text-muted);"></div>