thumbgate 1.26.8 → 1.27.3

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 (57) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.well-known/agentic-verify.txt +1 -0
  3. package/.well-known/llms.txt +2 -0
  4. package/.well-known/mcp/server-card.json +1 -1
  5. package/README.md +44 -31
  6. package/adapters/claude/.mcp.json +2 -2
  7. package/adapters/gcp/dfcx-webhook-gate.js +295 -0
  8. package/adapters/mcp/server-stdio.js +41 -1
  9. package/adapters/opencode/opencode.json +1 -1
  10. package/bench/thumbgate-bench.json +2 -2
  11. package/bin/cli.js +184 -8
  12. package/bin/dashboard-cli.js +7 -0
  13. package/config/gate-classifier-routing.json +98 -0
  14. package/config/gate-templates.json +60 -0
  15. package/config/mcp-allowlists.json +8 -7
  16. package/config/model-candidates.json +71 -6
  17. package/package.json +28 -12
  18. package/public/about.html +162 -0
  19. package/public/chatgpt-app.html +330 -0
  20. package/public/codex-plugin.html +66 -14
  21. package/public/compare.html +2 -2
  22. package/public/dashboard.html +224 -36
  23. package/public/guide.html +2 -2
  24. package/public/index.html +122 -40
  25. package/public/learn.html +70 -0
  26. package/public/lessons.html +129 -6
  27. package/public/numbers.html +2 -2
  28. package/public/pricing.html +28 -23
  29. package/public/pro.html +3 -3
  30. package/scripts/agent-operations-planner.js +621 -0
  31. package/scripts/agent-reward-model.js +53 -1
  32. package/scripts/ai-component-inventory.js +367 -0
  33. package/scripts/classifier-routing.js +130 -0
  34. package/scripts/cli-schema.js +26 -0
  35. package/scripts/commercial-offer.js +10 -2
  36. package/scripts/dashboard-chat.js +199 -51
  37. package/scripts/feedback-sanitizer.js +105 -0
  38. package/scripts/gates-engine.js +301 -67
  39. package/scripts/hybrid-feedback-context.js +141 -7
  40. package/scripts/memory-scope-readiness.js +159 -0
  41. package/scripts/oss-pr-opportunity-scout.js +35 -5
  42. package/scripts/parallel-workflow-orchestrator.js +293 -0
  43. package/scripts/plausible-domain-config.js +86 -0
  44. package/scripts/plausible-server-events.js +4 -2
  45. package/scripts/proxy-pointer-rag-guardrails.js +42 -1
  46. package/scripts/qa-scenario-planner.js +136 -0
  47. package/scripts/rate-limiter.js +2 -2
  48. package/scripts/repeat-metric.js +28 -12
  49. package/scripts/secret-fixture-tokens.js +61 -0
  50. package/scripts/secret-scanner.js +44 -5
  51. package/scripts/security-scanner.js +80 -0
  52. package/scripts/seo-gsd.js +113 -0
  53. package/scripts/thumbgate-bench.js +16 -1
  54. package/scripts/tool-registry.js +37 -0
  55. package/scripts/workflow-sentinel.js +282 -54
  56. package/src/api/server.js +466 -60
  57. package/.claude-plugin/marketplace.json +0 -85
@@ -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: 34px; height: 34px; border-radius: 8px; }
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-icon-512.png" 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 agents are blocked before execution.</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 hard block 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 blocks repeated mistakes where work happens: 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>
@@ -3,12 +3,12 @@
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>ThumbGate for Codex - Auto-Updating MCP Plugin</title>
6
+ <title>ThumbGate for Codex - CLI Setup and Plugin Bundle</title>
7
7
  <script defer data-domain="thumbgate-production.up.railway.app" src="https://plausible.io/js/script.js"></script>
8
- <meta name="description" content="Install ThumbGate for Codex with an auto-updating MCP plugin, Pre-Action Checks, thumbs-up/down feedback memory, and a local-first Reliability Gateway.">
8
+ <meta name="description" content="Install ThumbGate for Codex with CLI setup first, plus a portable Codex plugin bundle for review, marketplace, and offline workflows. Includes Pre-Action Checks and thumbs-up/down feedback memory.">
9
9
  <meta name="keywords" content="ThumbGate Codex plugin, Codex MCP server, Codex pre-action checks, Codex guardrails, thumbgate latest, AI coding agent reliability">
10
10
  <meta property="og:title" content="ThumbGate for Codex">
11
- <meta property="og:description" content="Auto-updating MCP and hook launcher for Codex. One install, then ThumbGate resolves the latest npm runtime when Codex starts.">
11
+ <meta property="og:description" content="CLI-first Codex setup with auto-updating MCP, hooks, and a portable plugin bundle for review or marketplace workflows.">
12
12
  <meta property="og:type" content="website">
13
13
  <meta property="og:url" content="https://thumbgate.ai/codex-plugin">
14
14
  <link rel="canonical" href="https://thumbgate.ai/codex-plugin">
@@ -21,7 +21,7 @@
21
21
  "name": "ThumbGate for Codex",
22
22
  "applicationCategory": "DeveloperApplication",
23
23
  "operatingSystem": "macOS, Linux, Windows with Node.js",
24
- "description": "ThumbGate for Codex installs an MCP server and hook launcher that resolves thumbgate@latest at startup, captures thumbs-up/down feedback, and enforces Pre-Action Checks before risky agent actions run.",
24
+ "description": "ThumbGate for Codex installs an MCP server and hook launcher that resolves thumbgate@latest at startup, captures thumbs-up/down feedback, and enforces Pre-Action Checks before risky agent actions run. The supported fast path is npx thumbgate init --agent codex; the zip is a portable plugin bundle, not a double-click desktop installer.",
25
25
  "url": "https://thumbgate.ai/codex-plugin",
26
26
  "downloadUrl": "https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-codex-plugin.zip",
27
27
  "installUrl": "https://thumbgate.ai/codex-plugin",
@@ -71,7 +71,15 @@
71
71
  "name": "What is the fastest Codex install path?",
72
72
  "acceptedAnswer": {
73
73
  "@type": "Answer",
74
- "text": "Run npx thumbgate init --agent codex for the automatic local setup, or use the standalone Codex plugin bundle if you want a portable plugin surface."
74
+ "text": "Run npx thumbgate init --agent codex for the automatic local setup. Use the standalone Codex plugin bundle only when you want a portable plugin folder for review, marketplace wiring, offline handoff, or a Codex build that exposes local plugin import."
75
+ }
76
+ },
77
+ {
78
+ "@type": "Question",
79
+ "name": "Does the release zip install itself in Codex Desktop?",
80
+ "acceptedAnswer": {
81
+ "@type": "Answer",
82
+ "text": "No. The zip is not a double-click installer. Extract it and install the folder through a Codex plugin directory or marketplace flow if your Codex build exposes one. Otherwise use npx thumbgate init --agent codex."
75
83
  }
76
84
  }
77
85
  ]
@@ -220,9 +228,9 @@
220
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>
221
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>
222
230
  <div class="actions">
223
- <a class="button primary" href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-codex-plugin.zip" target="_blank" rel="noopener" onclick="if(typeof plausible==='function')plausible('codex_plugin_download')">Download Codex plugin</a>
231
+ <a class="button primary" href="/guide" onclick="if(typeof plausible==='function')plausible('codex_cli_setup')">Install with CLI setup</a>
224
232
  <a class="button secondary" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/plugins/codex-profile/INSTALL.md" target="_blank" rel="noopener">Read install docs</a>
225
- <a class="button secondary" href="/guide">Use CLI setup</a>
233
+ <a class="button secondary" href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-codex-plugin.zip" target="_blank" rel="noopener" onclick="if(typeof plausible==='function')plausible('codex_plugin_download')">Download zip for review</a>
226
234
  </div>
227
235
  <nav class="proof-bar" aria-label="Codex proof and conversion links">
228
236
  <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/VERIFICATION_EVIDENCE.md" target="_blank" rel="noopener">Verification evidence</a>
@@ -231,8 +239,9 @@
231
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>
232
240
  </nav>
233
241
  <pre class="terminal">$ npx thumbgate init --agent codex
242
+ $ npx thumbgate feedback-self-test
234
243
  # Writes ~/.codex/config.toml and ~/.codex/config.json
235
- # MCP + hooks install thumbgate@latest before serving or checking gates</pre>
244
+ # Restart Codex, then confirm ThumbGate is enabled in Plugins or MCP settings</pre>
236
245
  </div>
237
246
  </section>
238
247
 
@@ -251,11 +260,31 @@
251
260
  </div>
252
261
  </section>
253
262
 
263
+ <section class="wrap">
264
+ <div class="eyebrow">Role plugins, Sites, and team OS</div>
265
+ <h2>Codex is becoming a business-work surface. ThumbGate is the action boundary.</h2>
266
+ <div class="steps">
267
+ <div class="step">
268
+ <h3>Role plugins</h3>
269
+ <p>Codex plugins bundle skills, apps, and MCP servers. ThumbGate checks role-specific writes before sales, analytics, design, finance, or support agents modify business systems.</p>
270
+ </div>
271
+ <div class="step">
272
+ <h3>Sites deploys</h3>
273
+ <p>Before a Sites workflow publishes or widens access, ThumbGate can require build proof, intended audience, secret handling, and deployment evidence.</p>
274
+ </div>
275
+ <div class="step">
276
+ <h3>Team Agentic OS</h3>
277
+ <p>Human-editable docs, agent-operating files, and git backups still need runtime checks. ThumbGate gates protected skills, MCP config, memory scope, and workflow contracts.</p>
278
+ </div>
279
+ </div>
280
+ <p><a href="/learn/codex-role-plugins-need-governance">Read the Codex role-plugin governance guide</a> · <a href="/learn/agentic-os-team-governance">Read the Agentic OS team governance guide</a> · <a href="/learn/cost-aware-agent-gate-routing">Read cost-aware gate routing</a></p>
281
+ </section>
282
+
254
283
  <section class="wrap split">
255
284
  <div>
256
285
  <div class="eyebrow">What Codex gets</div>
257
286
  <h2>MCP memory, hook checks, and a dashboard lane in the same install path.</h2>
258
- <p>Use the standalone plugin when you want a portable Codex bundle. Use <code>npx thumbgate init --agent codex</code> when you want the shortest path on this machine. Both paths point at the same Reliability Gateway and the same npm runtime.</p>
287
+ <p>Use <code>npx thumbgate init --agent codex</code> when you want the shortest path on this machine. Use the standalone zip only when you need a portable plugin folder for audit, offline handoff, marketplace wiring, or a Codex build that exposes local plugin import.</p>
259
288
  <p class="status">The Codex launcher checks npm on startup. Restart Codex after a ThumbGate publish to let the MCP server and hook bundle pick up the latest runtime.</p>
260
289
  </div>
261
290
  <figure class="proof">
@@ -273,12 +302,31 @@
273
302
  <p>Run <code>npx thumbgate init --agent codex</code>. ThumbGate writes the MCP server block and hook bundle into your Codex config files.</p>
274
303
  </div>
275
304
  <div class="step">
276
- <h3>2. Standalone plugin</h3>
277
- <p>Use the release bundle when Codex loads plugin surfaces directly. The bundle includes the manifest, MCP config, marketplace entry, and install docs.</p>
305
+ <h3>2. Plugin directory</h3>
306
+ <p>For a true plugin install, use Codex Plugins or a marketplace source. In the Add marketplace dialog, do not keep Codex's default <code>plugins/codex</code> sparse path for this repo; use <code>.agents/plugins/marketplace.json</code> and <code>plugins/codex-profile</code>, or leave sparse paths blank for a local checkout.</p>
278
307
  </div>
279
308
  <div class="step">
280
- <h3>3. Verify in Codex</h3>
281
- <p>Open Codex settings, confirm <code>thumbgate</code> is toggled on, then restart Codex after npm releases to pick up the latest runtime.</p>
309
+ <h3>3. Zip for review</h3>
310
+ <p>The zip is a portable folder, not a double-click installer. Extract it, inspect <code>.codex-plugin/plugin.json</code>, and use CLI setup when local plugin import is unavailable.</p>
311
+ </div>
312
+ </div>
313
+ </section>
314
+
315
+ <section class="wrap">
316
+ <div class="eyebrow">Desktop install reality</div>
317
+ <h2>Do not make users guess what to do with a zip.</h2>
318
+ <div class="steps">
319
+ <div class="step">
320
+ <h3>Use first</h3>
321
+ <p><code>npx thumbgate init --agent codex</code> is the supported self-serve path. It configures MCP, hooks, and the status line without asking the user to understand plugin internals.</p>
322
+ </div>
323
+ <div class="step">
324
+ <h3>Use when available</h3>
325
+ <p>If Codex shows Plugins, open the directory, clear restrictive filters like <code>Built by OpenAI</code>, install ThumbGate from a marketplace or shared plugin entry, then start a new thread after install.</p>
326
+ </div>
327
+ <div class="step">
328
+ <h3>Use for operators</h3>
329
+ <p>Download the zip only for security review, offline delivery, or manual marketplace wiring. The user selects the extracted folder, never the compressed file.</p>
282
330
  </div>
283
331
  </div>
284
332
  </section>
@@ -312,7 +360,11 @@
312
360
  </div>
313
361
  <div class="faq">
314
362
  <h3>Where is the direct asset?</h3>
315
- <p>The standalone zip remains available at <a href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-codex-plugin.zip" target="_blank" rel="noopener">GitHub Releases</a>. This page is the human install surface so users do not land on an unexplained file download.</p>
363
+ <p>The standalone zip remains available at <a href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-codex-plugin.zip" target="_blank" rel="noopener">GitHub Releases</a>. It is for review, offline delivery, and manual marketplace workflows. It is not a double-click Codex Desktop installer.</p>
364
+ </div>
365
+ <div class="faq">
366
+ <h3>I searched Plugins for ThumbGate. Why is it missing?</h3>
367
+ <p>First clear the <code>Built by OpenAI</code> filter. ThumbGate is a local or third-party marketplace plugin, so an OpenAI-only filter hides it. Then confirm the marketplace includes <code>.agents/plugins/marketplace.json</code> and <code>plugins/codex-profile</code>; the default <code>plugins/codex</code> sparse path will miss this repo.</p>
316
368
  </div>
317
369
  </div>
318
370
  </section>
@@ -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 5 feedback captures/day, 25 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. Team rollout ($49/seat/mo) adds a shared lesson database and org dashboard."
65
+ "text": "ThumbGate has a free tier that includes local enforcement with 5 feedback captures/day, 25 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."
66
66
  }
67
67
  },
68
68
  {
@@ -311,7 +311,7 @@
311
311
 
312
312
  <div class="card">
313
313
  <h3>Is ThumbGate free?</h3>
314
- <p>ThumbGate has a free tier that includes local enforcement with 5 feedback captures/day, 25 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. Team rollout ($49/seat/mo) adds a shared lesson database and org dashboard.</p>
314
+ <p>ThumbGate has a free tier that includes local enforcement with 5 feedback captures/day, 25 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>
315
315
  </div>
316
316
 
317
317
  <div class="card">