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,280 +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>ThumbGate vs Anthropic's Claude Containment | IDE-Agent Extension of a Published Architecture</title>
7
- <meta name="description" content="Anthropic published their three-layer containment architecture for Claude: ephemeral containers, OS-level sandboxes (Seatbelt / bubblewrap), and an MITM egress proxy. ThumbGate extends the same model to the IDE-agent layer — Cursor, Codex, Gemini, Amp, Cline, OpenCode — where Anthropic's sandbox stops." />
8
- <meta property="og:title" content="ThumbGate vs Anthropic's Claude Containment | IDE-Agent Extension" />
9
- <meta property="og:description" content="Anthropic contains Claude on claude.ai and Claude Code. ThumbGate contains the agents Anthropic does not own: Cursor, Codex, Gemini, Amp, Cline, OpenCode. Same three-layer model, extended to the agents you actually use." />
10
- <meta property="og:type" content="article" />
11
- <meta property="og:url" content="https://thumbgate.ai/compare/anthropic-containment" />
12
- <link rel="canonical" href="https://thumbgate.ai/compare/anthropic-containment" />
13
- <link rel="llm-context" href="/llm-context.md" type="text/markdown" />
14
- <link rel="icon" type="image/png" href="/thumbgate-icon.png" />
15
- <link rel="apple-touch-icon" href="/assets/brand/thumbgate-mark.svg" />
16
- <meta property="og:image" content="/og.png" />
17
- <style>
18
- :root { --bg: #0a0a0b; --bg-raised: #111113; --bg-card: #161618; --line: #222225; --text: #e8e8ec; --muted: #8b8b96; --cyan: #22d3ee; --green: #4ade80; --amber: #fbbf24; }
19
- * { box-sizing: border-box; }
20
- body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: var(--bg); color: var(--text); line-height: 1.65; }
21
- a { color: var(--cyan); text-decoration: none; }
22
- a:hover { text-decoration: underline; }
23
- .container { max-width: 980px; margin: 0 auto; padding: 0 24px; }
24
- .topbar { position: sticky; top: 0; z-index: 20; backdrop-filter: blur(12px); background: rgba(10, 10, 11, 0.88); border-bottom: 1px solid var(--line); }
25
- .topbar .container { display: flex; justify-content: space-between; align-items: center; padding-top: 14px; padding-bottom: 14px; }
26
- .brand { font-weight: 700; color: var(--text); display: inline-flex; align-items: center; gap: 8px; text-decoration: none; }
27
- .brand .logo-mark { width: 28px; height: 28px; display: block; }
28
- .hero { padding: 72px 0 32px; }
29
- .eyebrow { display: inline-flex; align-items: center; gap: 8px; padding: 6px 12px; border-radius: 999px; border: 1px solid rgba(34, 211, 238, 0.22); background: rgba(34, 211, 238, 0.1); color: var(--cyan); text-transform: uppercase; letter-spacing: 0.08em; font-size: 12px; font-weight: 700; }
30
- h1 { font-size: clamp(34px, 5vw, 56px); line-height: 1.06; letter-spacing: -0.04em; margin: 16px 0; max-width: 860px; }
31
- .hero p { max-width: 760px; color: var(--muted); font-size: 18px; }
32
- .grid { display: grid; grid-template-columns: minmax(0, 2fr) minmax(280px, 1fr); gap: 24px; padding-bottom: 72px; }
33
- .card, .detail-section, .sidebar-card { background: var(--bg-card); border: 1px solid var(--line); border-radius: 16px; }
34
- .card { padding: 24px; }
35
- .detail-section { padding: 24px; margin-bottom: 18px; }
36
- .detail-section h2 { margin: 0 0 12px; font-size: 24px; letter-spacing: -0.03em; }
37
- .detail-section p, .detail-section li, .sidebar-card p { color: var(--muted); }
38
- .detail-section ul, .card ul { padding-left: 18px; color: var(--muted); }
39
- .comparison-table { width: 100%; border-collapse: collapse; margin-top: 16px; font-size: 14px; }
40
- .comparison-table th, .comparison-table td { border: 1px solid var(--line); padding: 12px; text-align: left; vertical-align: top; }
41
- .comparison-table th { background: var(--bg-raised); color: var(--cyan); }
42
- .pill-row { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 24px; }
43
- .pill { border: 1px solid var(--line); background: var(--bg-raised); border-radius: 999px; padding: 10px 14px; font-size: 14px; font-weight: 650; }
44
- .pill.good { color: #b8f7c8; border-color: rgba(74, 222, 128, 0.28); background: rgba(74, 222, 128, 0.1); }
45
- .pill.warn { color: #ffe2a4; border-color: rgba(251, 191, 36, 0.28); background: rgba(251, 191, 36, 0.1); }
46
- .sidebar { display: flex; flex-direction: column; gap: 18px; }
47
- .sidebar-card { padding: 20px; }
48
- .sidebar-card:first-child { position: sticky; top: 84px; max-height: calc(100vh - 104px); overflow-y: auto; -webkit-overflow-scrolling: touch; }
49
- .cta-button { display: inline-flex; align-items: center; justify-content: center; margin-top: 18px; padding: 12px 16px; border-radius: 10px; background: var(--cyan); color: #071116; font-weight: 700; text-decoration: none; }
50
- .related-card { display: block; padding: 14px; border-radius: 12px; border: 1px solid var(--line); background: var(--bg-raised); margin-top: 12px; color: var(--text); }
51
- .related-label { display: block; color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 4px; }
52
- .faq-item { border-top: 1px solid var(--line); padding: 14px 0; }
53
- .faq-item summary { cursor: pointer; font-weight: 600; }
54
- .faq-item p { color: var(--muted); }
55
- blockquote { border-left: 3px solid var(--cyan); margin: 14px 0; padding: 6px 16px; color: var(--text); font-style: italic; background: rgba(34, 211, 238, 0.05); }
56
- @media (max-width: 860px) { .grid { grid-template-columns: 1fr; } .sidebar-card:first-child { position: static; max-height: none; overflow: visible; } }
57
- </style>
58
- <script type="application/ld+json">
59
- {
60
- "@context": "https://schema.org",
61
- "@type": "TechArticle",
62
- "headline": "ThumbGate vs Anthropic's Claude Containment Architecture",
63
- "description": "Anthropic published their three-layer containment model: environment isolation (ephemeral gVisor containers, Seatbelt/bubblewrap sandboxes, hypervisor VMs), behavioral guidance, and external content controls. ThumbGate extends the same model to the IDE-agent layer where Anthropic's sandbox stops.",
64
- "about": ["thumbgate vs anthropic containment", "Claude Code sandbox", "IDE agent safety architecture", "PreToolUse hooks for non-Claude agents"],
65
- "url": "https://thumbgate.ai/compare/anthropic-containment",
66
- "citation": "https://www.anthropic.com/engineering/how-we-contain-claude",
67
- "publisher": { "@type": "Organization", "name": "ThumbGate", "url": "https://thumbgate.ai" },
68
- "mainEntityOfPage": "https://thumbgate.ai/compare/anthropic-containment"
69
- }
70
- </script>
71
- <script type="application/ld+json">
72
- {
73
- "@context": "https://schema.org",
74
- "@type": "FAQPage",
75
- "mainEntity": [
76
- {
77
- "@type": "Question",
78
- "name": "Is ThumbGate a competitor to Anthropic's Claude containment?",
79
- "acceptedAnswer": {
80
- "@type": "Answer",
81
- "text": "No. Anthropic's published containment architecture (gVisor ephemeral containers on claude.ai, Seatbelt on macOS and bubblewrap on Linux for Claude Code, hypervisor VMs for Claude Cowork, MITM egress proxy) covers what they ship. It stops at the Claude Code process boundary. ThumbGate runs the same three-layer model (environment → permission gate → egress) at the IDE-agent layer for the agents Anthropic does not own: Cursor, OpenAI Codex CLI, Google Gemini CLI, Sourcegraph Amp, Cline, OpenCode, and Claude Desktop. Same architectural model, extended to the agents your team actually uses alongside Claude Code."
82
- }
83
- },
84
- {
85
- "@type": "Question",
86
- "name": "What does Anthropic's article tell us about agent containment?",
87
- "acceptedAnswer": {
88
- "@type": "Answer",
89
- "text": "Three lessons we operationalize: (1) Design for containment at the environment layer first, then steer behavior at the model layer. (2) Tool output is an attack surface even when the tool is trusted — a system prompt cannot prevent an exfiltration that the tool itself returns. (3) Battle-tested primitives (hypervisors, seccomp, gVisor) are more reliable than custom proxy components. ThumbGate's PreToolUse hook is the IDE-agent analogue of Anthropic's permission gate; the planned PostToolUse output inspection is the IDE-agent analogue of Anthropic's tool-output check before context insertion."
90
- }
91
- },
92
- {
93
- "@type": "Question",
94
- "name": "Where does Anthropic's containment stop and ThumbGate begin?",
95
- "acceptedAnswer": {
96
- "@type": "Answer",
97
- "text": "Anthropic's containment lives inside the products they ship (claude.ai, Claude Code, Claude Cowork). The moment your developer opens Cursor with the Anthropic API key, or runs an OpenAI Codex CLI session against a local repo, or wires up an MCP server in any agent runtime, you've left Anthropic's containment boundary. ThumbGate runs the same PreToolUse-gating model inside those non-Anthropic-owned runtimes. The two compose: Anthropic contains Claude inside their products, ThumbGate contains the agents your team uses outside them."
98
- }
99
- },
100
- {
101
- "@type": "Question",
102
- "name": "Why should I use a third-party tool instead of writing my own bubblewrap rules?",
103
- "acceptedAnswer": {
104
- "@type": "Answer",
105
- "text": "Anthropic's own conclusion: 'the software you build yourself is often the weakest.' Their early custom MITM proxy failed in real incidents involving credential exfiltration and allowlist bypasses; they rebuilt on hypervisor primitives. ThumbGate's gate engine, lesson DB, Thompson Sampling auto-promotion, and adapter matrix across eight agent runtimes is the same argument: maintained infrastructure beats per-team shell scripts that go stale the moment Claude Code, Cursor, or Codex ship a breaking change to their hook API."
106
- }
107
- },
108
- {
109
- "@type": "Question",
110
- "name": "Does ThumbGate use any of the same primitives Anthropic uses?",
111
- "acceptedAnswer": {
112
- "@type": "Answer",
113
- "text": "Different layer, different primitives. Anthropic relies on OS sandboxes (Seatbelt, bubblewrap, gVisor, hypervisors) because they ship the runtime. ThumbGate runs as a PreToolUse hook inside agent runtimes that don't expose those OS primitives to third parties, so ThumbGate's enforcement layer is pure JavaScript pattern matching against intercepted tool calls — fast, auditable, no LLM on the path. The architectural model is the same; the implementation is what each layer can reach."
114
- }
115
- }
116
- ]
117
- }
118
- </script>
119
- </head>
120
- <body>
121
- <div class="topbar">
122
- <div class="container">
123
- <a class="brand" href="/"><img src="/assets/brand/thumbgate-mark-inline.svg" alt="ThumbGate" class="logo-mark" width="28" height="28"><span class="logo-text">ThumbGate</span></a>
124
- <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/VERIFICATION_EVIDENCE.md" target="_blank" rel="noopener">Verification evidence</a>
125
- </div>
126
- </div>
127
-
128
- <section class="hero">
129
- <div class="container">
130
- <span class="eyebrow">ThumbGate vs Anthropic Containment</span>
131
- <h1>Anthropic contains Claude inside their products. ThumbGate contains every other agent your team uses.</h1>
132
- <p>Anthropic published <a href="https://www.anthropic.com/engineering/how-we-contain-claude" target="_blank" rel="noopener">"How we contain Claude"</a> on their engineering blog — a three-layer architecture (environment isolation → behavioral guidance → external content controls) implemented across claude.ai, Claude Code, and Claude Cowork. That coverage stops at the Anthropic product boundary. <strong>ThumbGate runs the same architectural model at the IDE-agent layer</strong> — Cursor, OpenAI Codex CLI, Google Gemini CLI, Sourcegraph Amp, Cline, OpenCode, and Claude Desktop — where Anthropic's sandbox does not reach.</p>
133
- <div class="pill-row">
134
- <span class="pill">Same 3-layer model</span>
135
- <span class="pill">Different runtime layer</span>
136
- <span class="pill good">Composable, not competitive</span>
137
- </div>
138
- </div>
139
- </section>
140
-
141
- <div class="container grid">
142
- <main>
143
- <article class="detail-section">
144
- <h2>Anthropic's published architecture, mapped to ThumbGate</h2>
145
- <table class="comparison-table">
146
- <thead>
147
- <tr>
148
- <th>Anthropic layer (published practice)</th>
149
- <th>Where ThumbGate fits</th>
150
- </tr>
151
- </thead>
152
- <tbody>
153
- <tr>
154
- <td><strong>Ephemeral gVisor containers</strong> (claude.ai per-session filesystem; "no code runs on the local machine")</td>
155
- <td>Out of scope — Anthropic's hosted product. ThumbGate is local-first by design.</td>
156
- </tr>
157
- <tr>
158
- <td><strong>OS-level sandbox</strong> (Seatbelt on macOS, bubblewrap on Linux for Claude Code; 84% reduction in permission prompts)</td>
159
- <td><strong>Direct analogue.</strong> ThumbGate's PreToolUse hook is the cross-agent version: same "evaluate before execution" model, but works inside Cursor, Codex, Gemini, Amp, Cline, OpenCode where bubblewrap/Seatbelt don't apply.</td>
160
- </tr>
161
- <tr>
162
- <td><strong>Hypervisor VM isolation</strong> (Claude Cowork; "the agent loop ran inside the guest…executed as an ordinary Linux user with no awareness it was sandboxed")</td>
163
- <td>Out of scope — Anthropic's managed VM offering. ThumbGate's adjacent value: deterministic rule enforcement that follows the agent across whichever machine you run it on.</td>
164
- </tr>
165
- <tr>
166
- <td><strong>MITM egress proxy</strong> (intercepts API traffic, validates VM-provisioned session tokens after credential exfiltration was discovered through approved domains)</td>
167
- <td><strong>Roadmap analogue.</strong> ThumbGate's egress-rule gates can block external LLM calls when privilege markers or restricted hostnames appear in the outbound payload — same defense, IDE-agent layer.</td>
168
- </tr>
169
- <tr>
170
- <td><strong>Tool output inspection pre-context</strong> ("tool output is an attack surface even when the tool is trusted")</td>
171
- <td><strong>Direct roadmap item.</strong> PostToolUse output inspection is the natural extension of ThumbGate's PreToolUse model. Same logic, applied to the returned payload before it enters agent context.</td>
172
- </tr>
173
- <tr>
174
- <td><strong>Model-layer behavioral guidance</strong> (system prompts, model tuning)</td>
175
- <td>Not us. ThumbGate is deterministic enforcement, not steering. We assume the model will sometimes try the wrong thing; the gate is what stops it from succeeding.</td>
176
- </tr>
177
- </tbody>
178
- </table>
179
- </article>
180
-
181
- <article class="detail-section">
182
- <h2>Three lessons from Anthropic that operationalize for non-Anthropic agents</h2>
183
- <p><strong>1. Environment first, behavior second.</strong> Anthropic writes:</p>
184
- <blockquote>"Design for containment at the environment layer first, then steer behavior at the model layer."</blockquote>
185
- <p>This is exactly why ThumbGate is a PreToolUse hook rather than a system-prompt addition. The gate fires regardless of what the model "tries to do" — it acts on the actual tool-call payload, not on the model's intent.</p>
186
-
187
- <p><strong>2. Tool output is an attack surface.</strong> Anthropic writes:</p>
188
- <blockquote>"Tool output is an attack surface even when the tool is trusted."</blockquote>
189
- <p>This is the architectural justification for ThumbGate's roadmapped PostToolUse output-inspection layer. A trusted internal tool returning poisoned data is the same threat as an untrusted external one — both flow into the model's context window with the same authority.</p>
190
-
191
- <p><strong>3. Battle-tested primitives beat custom proxies.</strong> Anthropic writes:</p>
192
- <blockquote>"The software you build yourself is often the weakest."</blockquote>
193
- <p>Their early custom MITM proxy failed in real incidents involving credential exfiltration and allowlist bypasses; they rebuilt on hypervisor primitives. The same argument applies one layer up: a maintained third-party gate engine, lesson DB, and adapter matrix across eight agent runtimes is more reliable than per-team shell scripts that go stale the moment Claude Code, Cursor, or Codex ship a breaking change to their hook API.</p>
194
- </article>
195
-
196
- <article class="detail-section">
197
- <h2>When you should rely on Anthropic's containment vs ThumbGate</h2>
198
- <ul>
199
- <li><strong>You only use claude.ai:</strong> Anthropic's containment is doing the work. ThumbGate adds nothing.</li>
200
- <li><strong>You only use Claude Code on macOS or Linux:</strong> Anthropic's bubblewrap/Seatbelt covers the bash + filesystem surface. ThumbGate adds value for repeated-mistake prevention (the "thumbs down → blocked next time" loop) and for any MCP servers wired into Claude Code that bubblewrap doesn't gate.</li>
201
- <li><strong>You use Cursor, Codex CLI, Gemini CLI, Amp, Cline, OpenCode, or Claude Desktop:</strong> Anthropic's sandboxes do not apply. ThumbGate is the only PreToolUse layer that covers all of them with one configuration.</li>
202
- <li><strong>You use Claude Cowork:</strong> Anthropic's hypervisor VM contains the execution surface. ThumbGate's enforcement persists across whichever VM or machine the agent runs on, useful when you want the same rule to fire in dev + production.</li>
203
- </ul>
204
- </article>
205
-
206
- <article class="detail-section">
207
- <h2>FAQ</h2>
208
- <details class="faq-item" open>
209
- <summary>Is ThumbGate a competitor to Anthropic's Claude containment?</summary>
210
- <p>No. Anthropic's containment stops at the Claude Code / claude.ai / Claude Cowork product boundary. ThumbGate runs the same three-layer model at the IDE-agent layer — Cursor, Codex, Gemini, Amp, Cline, OpenCode, Claude Desktop — where Anthropic's sandbox does not reach.</p>
211
- </details>
212
- <details class="faq-item">
213
- <summary>What does Anthropic's article tell us about agent containment?</summary>
214
- <p>Three lessons we operationalize: environment first then behavior, tool output is an attack surface, battle-tested primitives beat custom proxies. ThumbGate's PreToolUse hook is the IDE-agent analogue of Anthropic's permission gate; the planned PostToolUse output inspection is the analogue of Anthropic's tool-output check before context insertion.</p>
215
- </details>
216
- <details class="faq-item">
217
- <summary>Why use a third-party tool instead of writing my own bubblewrap rules?</summary>
218
- <p>Anthropic's own conclusion: "the software you build yourself is often the weakest." Their early custom MITM proxy failed in real incidents; they rebuilt on hypervisor primitives. ThumbGate's maintained gate engine + lesson DB + adapter matrix is the same argument one layer up: maintained infrastructure beats per-team shell scripts that go stale the moment Claude Code, Cursor, or Codex ship a breaking change to their hook API.</p>
219
- </details>
220
- <details class="faq-item">
221
- <summary>Where does Anthropic's containment stop and ThumbGate begin?</summary>
222
- <p>Inside Anthropic's products: Anthropic. The moment your dev opens Cursor with the Anthropic API key, or runs Codex against a local repo, or wires up an MCP server in any agent runtime: ThumbGate. The two compose without overlap.</p>
223
- </details>
224
- <details class="faq-item">
225
- <summary>Where do I start?</summary>
226
- <p>If you use Claude Code: keep using it as-is, install ThumbGate alongside (<code>npx thumbgate init</code>) for the repeated-mistake prevention loop and for the MCP servers Anthropic's sandbox doesn't reach. If you use any other agent runtime: ThumbGate is the only deterministic PreToolUse layer for them.</p>
227
- </details>
228
- </article>
229
- </main>
230
-
231
- <aside class="sidebar">
232
- <div class="sidebar-card">
233
- <h3 style="margin: 0 0 8px;">Install ThumbGate free</h3>
234
- <p>10 captures/day, 3 active rules, PreToolUse blocking across Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode, Claude Desktop.</p>
235
- <pre style="background: var(--bg-raised); border: 1px solid var(--line); border-radius: 8px; padding: 12px; font-size: 13px; overflow: auto;">npx thumbgate init</pre>
236
- <a class="cta-button" href="/pricing">See Pro vs Team pricing →</a>
237
- <p style="font-size: 12px; margin-top: 16px;">MIT licensed. No telemetry without opt-in. <code>THUMBGATE_NO_TELEMETRY=1</code> disables.</p>
238
- </div>
239
-
240
- <div class="sidebar-card">
241
- <span class="related-label">Read Anthropic's article</span>
242
- <p style="font-size: 13px;"><a href="https://www.anthropic.com/engineering/how-we-contain-claude" target="_blank" rel="noopener">"How we contain Claude" — Anthropic engineering blog</a>. The published architectural model this page extends to non-Anthropic agent runtimes.</p>
243
- </div>
244
-
245
- <div class="sidebar-card">
246
- <span class="related-label">Related comparisons</span>
247
- <a class="related-card" href="/compare/bumblebee">
248
- <strong>ThumbGate vs Bumblebee</strong><br>
249
- <span style="color: var(--muted); font-size: 13px;">Runtime enforcement vs Perplexity's static MCP inventory</span>
250
- </a>
251
- <a class="related-card" href="/compare/claude-code-hooks">
252
- <strong>ThumbGate vs claude-code-hooks</strong><br>
253
- <span style="color: var(--muted); font-size: 13px;">Hosted sync vs local shell scripts</span>
254
- </a>
255
- <a class="related-card" href="/compare/heidi">
256
- <strong>ThumbGate vs HEIDI</strong><br>
257
- <span style="color: var(--muted); font-size: 13px;">Agent behavior vs dependency CVE scanning</span>
258
- </a>
259
- <a class="related-card" href="/compare/oak-and-sparrow-gatekeeper">
260
- <strong>ThumbGate vs Gatekeeper (Oak &amp; Sparrow)</strong><br>
261
- <span style="color: var(--muted); font-size: 13px;">Agent-action gate vs workforce-input gate</span>
262
- </a>
263
- <a class="related-card" href="/compare/arcjet">
264
- <strong>ThumbGate vs Arcjet</strong><br>
265
- <span style="color: var(--muted); font-size: 13px;">Agent-outbound gate vs app-inbound firewall</span>
266
- </a>
267
- <a class="related-card" href="/compare/anthropic-claude-for-legal">
268
- <strong>ThumbGate vs Claude for Legal</strong><br>
269
- <span style="color: var(--muted); font-size: 13px;">Runtime feedback-to-enforcement loop underneath Anthropic's legal bundle</span>
270
- </a>
271
- </div>
272
-
273
- <div class="sidebar-card">
274
- <span class="related-label">Sources</span>
275
- <p style="font-size: 13px;">All Anthropic quotes from <a href="https://www.anthropic.com/engineering/how-we-contain-claude" target="_blank" rel="noopener">"How we contain Claude"</a> on the Anthropic engineering blog. If anything here misrepresents Anthropic's published architecture, open an issue at <a href="https://github.com/IgorGanapolsky/ThumbGate/issues" target="_blank" rel="noopener">our repo</a> and we'll correct it.</p>
276
- </div>
277
- </aside>
278
- </div>
279
- </body>
280
- </html>
@@ -1,175 +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>ThumbGate vs Arcade — Coding-Agent Guardrails vs Enterprise API Auth Delegation</title>
7
- <script defer data-domain="thumbgate.ai" src="https://plausible.io/js/script.js"></script>
8
- <meta name="description" content="ThumbGate vs Arcade for AI agent governance. Arcade is a cloud-hosted OAuth proxy for enterprise production agents accessing SaaS APIs. ThumbGate is a local-first, feedback-driven pre-action check firewall for coding agents.">
9
- <meta name="keywords" content="AI agent governance, Arcade.dev, ThumbGate, runtime governance, pre-action hooks, agent decorator, coding agent guardrails, OAuth proxy, MCP authorization">
10
- <meta property="og:title" content="ThumbGate vs Arcade — Coding-Agent Guardrails vs Enterprise API Auth Delegation">
11
- <meta property="og:description" content="Both intercept agent actions before damage. Different layers, different deployment models, different target loops. Honest side-by-side.">
12
- <meta property="og:type" content="article">
13
- <meta property="og:url" content="https://thumbgate.ai/compare/arcade">
14
- <link rel="canonical" href="https://thumbgate.ai/compare/arcade">
15
-
16
- <script type="application/ld+json">
17
- {
18
- "@context": "https://schema.org",
19
- "@type": "TechArticle",
20
- "headline": "ThumbGate vs Arcade — Coding-Agent Guardrails vs Enterprise API Auth Delegation",
21
- "description": "Side-by-side comparison of two governance layers for AI agents. ThumbGate is a local-first pre-action check firewall specialized for AI coding agents. Arcade is a cloud-hosted auth proxy for enterprise production agents.",
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-17",
33
- "dateModified": "2026-06-17",
34
- "mainEntityOfPage": "https://thumbgate.ai/compare/arcade"
35
- }
36
- </script>
37
-
38
- <script type="application/ld+json">
39
- {
40
- "@context": "https://schema.org",
41
- "@type": "FAQPage",
42
- "mainEntity": [
43
- {
44
- "@type": "Question",
45
- "name": "What's the difference between Arcade and ThumbGate?",
46
- "acceptedAnswer": {
47
- "@type": "Answer",
48
- "text": "Both address the 'accountability gap' in AI agents, but they focus on different parts of the stack. Arcade is a cloud-hosted auth proxy built to delegate user identities (via OAuth) to downstream SaaS APIs for production enterprise agents. ThumbGate is a local-first pre-action check firewall built to prevent coding agents (Claude Code, Cursor, Cline) from making filesystem mistakes or breaking builds. Arcade targets enterprise SaaS integration; ThumbGate targets the developer's inner loop."
49
- }
50
- },
51
- {
52
- "@type": "Question",
53
- "name": "Does Arcade support MCP?",
54
- "acceptedAnswer": {
55
- "@type": "Answer",
56
- "text": "Yes. Arcade authored the Model Context Protocol (MCP) authorization spec to delegate OAuth tokens to APIs. ThumbGate operates as a local MCP server that enforces rule boundaries directly at the developer's tool-call execution level."
57
- }
58
- },
59
- {
60
- "@type": "Question",
61
- "name": "Do I need to rewrite code to integrate ThumbGate or Arcade?",
62
- "acceptedAnswer": {
63
- "@type": "Answer",
64
- "text": "ThumbGate requires zero code changes — it auto-configures PreToolUse hooks via a CLI command (npx thumbgate init) to run out-of-process. Arcade requires routing agent API calls through their auth proxy or utilizing their SDK in your agent application backend."
65
- }
66
- }
67
- ]
68
- }
69
- </script>
70
-
71
- <link rel="stylesheet" href="/learn/learn.css">
72
- <style>
73
- .matrix { width: 100%; border-collapse: collapse; margin: 1.5rem 0; font-size: 0.95rem; }
74
- .matrix th, .matrix td { padding: 12px 14px; text-align: left; border-bottom: 1px solid var(--border); vertical-align: top; }
75
- .matrix th { background: var(--bg-card); font-weight: 600; }
76
- .matrix td:nth-child(2) { color: var(--muted); }
77
- .matrix td:nth-child(3) { color: var(--text); }
78
- .verdict { font-weight: 600; color: var(--green); }
79
- .pair { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 1.5rem 0; }
80
- .pair > div { background: var(--bg-card); border: 1px solid var(--border); border-radius: 8px; padding: 1rem; }
81
- @media (max-width: 700px) { .pair { grid-template-columns: 1fr; } }
82
- </style>
83
- </head>
84
- <body>
85
-
86
- <nav>
87
- <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>
88
- <a href="/pricing">Pricing</a>
89
- <a href="/case-studies">Case Studies</a>
90
- <a href="/compare">Compare</a>
91
- <a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub</a>
92
- </nav>
93
-
94
- <div class="container">
95
- <div class="breadcrumb"><a href="/compare">Compare</a> / ThumbGate vs Arcade</div>
96
- <h1>ThumbGate vs Arcade.dev</h1>
97
- <p style="color:var(--muted);">5 min read · For teams evaluating AI agent security, auth, and guardrail layers</p>
98
-
99
- <div class="tldr"><strong>TL;DR:</strong> Arcade is a cloud-hosted auth proxy built to delegate user identities (OAuth) to SaaS APIs for production-facing enterprise agents. ThumbGate is a local-first, feedback-driven pre-action check firewall built to prevent coding agents (Claude Code, Cursor, Cline) from making filesystem mistakes or breaking builds. Arcade secures API identity delegation; ThumbGate secures local tool-call execution.</div>
100
-
101
- <h2>Different Layers, Different Goals</h2>
102
- <p>Arcade recently announced a $60M Series A (led by SYN Ventures with Morgan Stanley and Wipro) to address the authorization accountability gap in production AI agents. While both products focus on the AI agent security space, they are designed for completely separate loops.</p>
103
-
104
- <p>If you're building a production agent that needs to draft emails, update Salesforce records, or post to Slack on behalf of real users, Arcade's token delegation is the industry standard. If you are a developer using Claude Code or Cursor and want to make sure the agent doesn't delete your files, leak API keys, or run unsafe commands, ThumbGate's local PreToolUse firewall is built for you.</p>
105
-
106
- <h2>Side-by-Side Comparison</h2>
107
-
108
- <table class="matrix">
109
- <thead>
110
- <tr><th style="width:28%;">Dimension</th><th style="width:36%;">Arcade.dev</th><th style="width:36%;">ThumbGate</th></tr>
111
- </thead>
112
- <tbody>
113
- <tr>
114
- <td><strong>Primary Value Prop</strong></td>
115
- <td>Secure identity/token delegation and auth propagation for production agents.</td>
116
- <td>Local pre-action checks preventing coding-agent mistakes and directory destruction.</td>
117
- </tr>
118
- <tr>
119
- <td><strong>Integration layer</strong></td>
120
- <td>Cloud auth proxy between agent application and downstream SaaS APIs.</td>
121
- <td>Out-of-process PreToolUse hook intercepting tool calls at the agent runtime boundary (Claude Code / Cursor / Codex / Gemini / Amp / Cline / OpenCode).</td>
122
- </tr>
123
- <tr>
124
- <td><strong>Deployment mode</strong></td>
125
- <td>Cloud-hosted service or self-hosted gateway.</td>
126
- <td>Local-first, runs on the developer's machine with SQLite/JSON persistence.</td>
127
- </tr>
128
- <tr>
129
- <td><strong>Identity &amp; Auth Model</strong></td>
130
- <td>OAuth 2.0 user identity propagation.</td>
131
- <td>Policy-based rules derived from human feedback (thumbs-down rules) and Thompson Sampling.</td>
132
- </tr>
133
- <tr>
134
- <td><strong>Primary target tools</strong></td>
135
- <td>SaaS APIs (Slack, Salesforce, GitHub, Gmail, Jira).</td>
136
- <td>Local system tools (filesystem write, terminal execute, git push, package install).</td>
137
- </tr>
138
- <tr>
139
- <td><strong>MCP Integration</strong></td>
140
- <td>Authored the MCP authorization specification for API token delegation.</td>
141
- <td>Operates as a local MCP server controlling local tool execution permissions.</td>
142
- </tr>
143
- <tr>
144
- <td><strong>Setup Friction</strong></td>
145
- <td>Requires configuring OAuth providers, redirect URIs, and deploying API proxy.</td>
146
- <td>Installs in 30 seconds via <code>npx thumbgate init</code> with zero infrastructure.</td>
147
- </tr>
148
- </tbody>
149
- </table>
150
-
151
- <h2>Complementary, Not Conflicting</h2>
152
- <p>Because they operate at different layers, ThumbGate and Arcade are complementary:</p>
153
- <ul>
154
- <li>Use <strong>Arcade</strong> to securely hook your company's production customer support agent into Gmail and Salesforce.</li>
155
- <li>Use <strong>ThumbGate</strong> to keep your software engineers' local AI coding assistants from introducing security bugs, breaking builds, or deleting files.</li>
156
- </ul>
157
-
158
- <h2>Get Started with Local Guardrails</h2>
159
- <div class="card">
160
- <p>Install ThumbGate locally in one command:</p>
161
- <pre><code>npx thumbgate init</code></pre>
162
- <p>Then give thumbs-up/down feedback to let the firewall learn your boundaries. Core CLI + local hooks are MIT licensed.</p>
163
- <p>
164
- <a href="https://www.npmjs.com/package/thumbgate" class="cta">View on npm</a>
165
- <a href="https://github.com/IgorGanapolsky/ThumbGate" style="color:var(--cyan); margin-left:1.5rem; text-decoration:underline;">View on GitHub</a>
166
- </p>
167
- </div>
168
- </div>
169
-
170
- <footer>
171
- <p>ThumbGate -- Pre-action checks for AI coding agents</p>
172
- <p><a href="https://github.com/IgorGanapolsky/ThumbGate">GitHub</a> | <a href="https://www.npmjs.com/package/thumbgate">npm</a> | <a href="/compare">Compare</a> | <a href="/dashboard">Dashboard</a></p>
173
- </footer>
174
- </body>
175
- </html>