thumbgate 1.27.9 → 1.27.11
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.
- package/README.md +4 -0
- package/config/gate-templates.json +228 -0
- package/config/gates/claim-verification.json +18 -0
- package/package.json +3 -3
- package/public/index.html +180 -0
- package/public/learn/agent-identity-connector-governance.html +146 -0
- package/public/learn/anthropomorphic-claim-gates.html +180 -0
- package/public/learn.html +28 -0
- package/scripts/gate-stats.js +11 -5
- package/scripts/hook-stop-anti-claim.js +369 -0
- package/scripts/tool-registry.js +2 -2
- package/src/api/server.js +2 -0
|
@@ -0,0 +1,146 @@
|
|
|
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>Agent Identity and Connector Governance — ThumbGate</title>
|
|
7
|
+
<meta name="description" content="How ThumbGate gates AI agent identities, MCP connectors, Tool Packs, service accounts, DLP, audit logs, and purpose-permission scope before agents act.">
|
|
8
|
+
<link rel="canonical" href="https://thumbgate.ai/learn/agent-identity-connector-governance">
|
|
9
|
+
<link rel="llm-context" href="/llm-context.md" type="text/markdown">
|
|
10
|
+
<link rel="icon" type="image/png" href="/thumbgate-icon.png">
|
|
11
|
+
<script defer data-domain="thumbgate.ai" src="https://plausible.io/js/script.js"></script>
|
|
12
|
+
<meta property="og:title" content="Agent Identity and Connector Governance">
|
|
13
|
+
<meta property="og:description" content="Agents with connectors are identities. Gate owner, invoker, credentials, permissions, DLP, audit, and purpose before the next tool call.">
|
|
14
|
+
<meta property="og:type" content="article">
|
|
15
|
+
<meta property="og:url" content="https://thumbgate.ai/learn/agent-identity-connector-governance">
|
|
16
|
+
<script type="application/ld+json">
|
|
17
|
+
{
|
|
18
|
+
"@context": "https://schema.org",
|
|
19
|
+
"@type": "TechArticle",
|
|
20
|
+
"headline": "Agent Identity and Connector Governance",
|
|
21
|
+
"description": "A ThumbGate implementation pattern for treating AI agents and MCP connector tool packs as governed identities with owner, purpose, credentials, permissions, DLP, and audit evidence.",
|
|
22
|
+
"datePublished": "2026-06-20",
|
|
23
|
+
"dateModified": "2026-06-20",
|
|
24
|
+
"author": {
|
|
25
|
+
"@type": "Person",
|
|
26
|
+
"name": "Igor Ganapolsky",
|
|
27
|
+
"url": "https://github.com/IgorGanapolsky"
|
|
28
|
+
},
|
|
29
|
+
"publisher": {
|
|
30
|
+
"@type": "Organization",
|
|
31
|
+
"name": "ThumbGate",
|
|
32
|
+
"url": "https://thumbgate.ai"
|
|
33
|
+
},
|
|
34
|
+
"url": "https://thumbgate.ai/learn/agent-identity-connector-governance",
|
|
35
|
+
"about": [
|
|
36
|
+
"AI agent identity",
|
|
37
|
+
"MCP connector governance",
|
|
38
|
+
"least privilege",
|
|
39
|
+
"agent audit trails"
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
</script>
|
|
43
|
+
<script type="application/ld+json">
|
|
44
|
+
{
|
|
45
|
+
"@context": "https://schema.org",
|
|
46
|
+
"@type": "FAQPage",
|
|
47
|
+
"mainEntity": [
|
|
48
|
+
{
|
|
49
|
+
"@type": "Question",
|
|
50
|
+
"name": "Is Glean a ThumbGate competitor?",
|
|
51
|
+
"acceptedAnswer": {
|
|
52
|
+
"@type": "Answer",
|
|
53
|
+
"text": "Glean is adjacent, not a direct replacement. Glean is a Work AI platform with enterprise search, agents, connectors, governance, orchestration, and an MCP gateway. ThumbGate is a local-first pre-action enforcement layer for agent tool calls, repeated-failure memory, and proof gates across developer and MCP workflows."
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"@type": "Question",
|
|
58
|
+
"name": "How does Merge Agent Handler relate to ThumbGate?",
|
|
59
|
+
"acceptedAnswer": {
|
|
60
|
+
"@type": "Answer",
|
|
61
|
+
"text": "Merge Agent Handler provides production-ready MCP connectors, authentication, scoped access, DLP, observability, and audit logs. ThumbGate complements it by gating whether the next tool call or connector addition matches the agent's owner, purpose, identity, and scope."
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
</script>
|
|
67
|
+
<style>
|
|
68
|
+
*, *::before, *::after { box-sizing: border-box; }
|
|
69
|
+
body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; background: #0a0a0b; color: #ececf0; line-height: 1.65; }
|
|
70
|
+
nav { display: flex; gap: 22px; align-items: center; padding: 16px 28px; border-bottom: 1px solid #242428; }
|
|
71
|
+
nav a { color: #a7a7b1; text-decoration: none; font-size: 0.95rem; }
|
|
72
|
+
nav a:hover { color: #22d3ee; }
|
|
73
|
+
.brand { color: #fff; font-weight: 700; display: inline-flex; gap: 8px; align-items: center; }
|
|
74
|
+
.brand img { width: 28px; height: 28px; }
|
|
75
|
+
main { max-width: 900px; margin: 0 auto; padding: 48px 22px 72px; }
|
|
76
|
+
h1 { font-size: clamp(2rem, 5vw, 3.55rem); line-height: 1.06; margin: 0 0 18px; max-width: 800px; }
|
|
77
|
+
h2 { color: #22d3ee; font-size: 1.45rem; margin: 42px 0 14px; }
|
|
78
|
+
p { margin: 0 0 16px; color: #d6d6de; }
|
|
79
|
+
a { color: #67e8f9; }
|
|
80
|
+
.lede { color: #a7a7b1; font-size: 1.15rem; max-width: 760px; }
|
|
81
|
+
.callout, .card { border: 1px solid #303039; background: #151518; border-radius: 8px; padding: 22px; }
|
|
82
|
+
.grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; margin: 24px 0; }
|
|
83
|
+
.card { background: #111114; padding: 18px; }
|
|
84
|
+
.card strong { display: block; color: #fff; margin-bottom: 8px; }
|
|
85
|
+
code, pre { font-family: "SF Mono", "Cascadia Code", "JetBrains Mono", Consolas, monospace; }
|
|
86
|
+
pre { overflow-x: auto; background: #050506; border: 1px solid #25252a; border-radius: 8px; padding: 18px; color: #d7f9ff; }
|
|
87
|
+
.source-note { color: #8f8f99; font-size: 0.92rem; }
|
|
88
|
+
.cta { display: inline-block; margin-top: 16px; padding: 11px 18px; border-radius: 8px; background: #22d3ee; color: #031114; text-decoration: none; font-weight: 700; }
|
|
89
|
+
@media (max-width: 720px) { nav { padding: 14px 18px; gap: 14px; flex-wrap: wrap; } main { padding-top: 32px; } .grid { grid-template-columns: 1fr; } }
|
|
90
|
+
</style>
|
|
91
|
+
</head>
|
|
92
|
+
<body>
|
|
93
|
+
<nav>
|
|
94
|
+
<a href="/" class="brand"><img src="/assets/brand/thumbgate-mark-inline.svg" alt="ThumbGate" width="28" height="28">ThumbGate</a>
|
|
95
|
+
<a href="/guide">Setup Guide</a>
|
|
96
|
+
<a href="/learn">Learn</a>
|
|
97
|
+
<a href="/compare/databricks-unity-ai-gateway">Runtime governance</a>
|
|
98
|
+
</nav>
|
|
99
|
+
<main>
|
|
100
|
+
<h1>Agents with connectors are identities</h1>
|
|
101
|
+
<p class="lede">Once an AI agent can authenticate to GitHub, Jira, Slack, Salesforce, Snowflake, cloud, databases, or remote MCP tool packs, it is no longer just a chatbot. It is an actor with credentials, permissions, owners, purpose, and drift.</p>
|
|
102
|
+
|
|
103
|
+
<div class="callout">
|
|
104
|
+
<p><strong>The high-ROI lesson:</strong> treat every agent as an identity and every connector bundle as a scoped permission set. ThumbGate gates the moment before the next action: is this tool call inside the agent's declared purpose, identity, and connector scope?</p>
|
|
105
|
+
<p class="source-note">Source signals: BleepingComputer/Token Security argued on June 19, 2026 that AI agents are becoming first-class identities; Merge Agent Handler positions production MCP connectors with authentication, scoped access, DLP, observability, and audit logs; Glean positions Work AI with agents, governance, orchestration, connectors, and MCP Gateway; Okta's AI identity checklist frames secure-by-design agent patterns around token vaulting, fine-grained authorization, human-in-the-loop oversight, shadow AI discovery, registration, and lifecycle management.</p>
|
|
106
|
+
</div>
|
|
107
|
+
|
|
108
|
+
<h2>What ThumbGate now gates</h2>
|
|
109
|
+
<div class="grid">
|
|
110
|
+
<div class="card"><strong>Identity inventory</strong> Owner, invoker, credential or service account, connected systems, and allowed verbs.</div>
|
|
111
|
+
<div class="card"><strong>Purpose-permission match</strong> A sales prep agent should not delete database tables or create privileged users.</div>
|
|
112
|
+
<div class="card"><strong>Connector Tool Pack scope</strong> Remote MCP and connector bundles need allowed tools, auth identity, DLP, audit, and downstream-system evidence.</div>
|
|
113
|
+
<div class="card"><strong>Review freshness</strong> Agent access changes over time; stale point-in-time reviews are treated as drift signals.</div>
|
|
114
|
+
<div class="card"><strong>Shadow agent registration</strong> Unregistered agents and imported MCP servers are blocked before privileged tool calls.</div>
|
|
115
|
+
<div class="card"><strong>Vaulted tokens</strong> Raw connector credentials, plaintext API keys, and unvaulted service tokens require explicit exception evidence.</div>
|
|
116
|
+
</div>
|
|
117
|
+
|
|
118
|
+
<h2>The proof actions</h2>
|
|
119
|
+
<p>Before a high-trust claim is accepted, ThumbGate can require tracked evidence:</p>
|
|
120
|
+
<pre><code>track_action("agent_identity_inventory_verified", {
|
|
121
|
+
owner: "workflow owner",
|
|
122
|
+
invoker: "who can run the agent",
|
|
123
|
+
credential: "service account or connector identity",
|
|
124
|
+
systems: ["GitHub", "Jira", "Slack"],
|
|
125
|
+
verbs: ["read", "write"],
|
|
126
|
+
purpose: "triage engineering tickets"
|
|
127
|
+
})
|
|
128
|
+
|
|
129
|
+
track_action("connector_scope_verified", {
|
|
130
|
+
platform: "Merge Agent Handler or Glean MCP Gateway",
|
|
131
|
+
allowedTools: ["create_ticket", "read_issue"],
|
|
132
|
+
dlp: "enabled",
|
|
133
|
+
audit: "tool-call logs verified",
|
|
134
|
+
downstreamSystems: ["Jira"]
|
|
135
|
+
})</code></pre>
|
|
136
|
+
|
|
137
|
+
<h2>Is Glean a competitor?</h2>
|
|
138
|
+
<p>Glean is adjacent and upstream. It is a Work AI platform: enterprise search, assistant, agents, orchestration, connectors, security, and MCP Gateway. It competes for enterprise AI budget, but it does not replace ThumbGate's local-first feedback-to-enforcement loop for Claude Code, Cursor, Codex, Gemini CLI, MCP tools, and developer-machine actions.</p>
|
|
139
|
+
<p>The wedge is complementary: Glean and Merge help agents reach more enterprise systems. ThumbGate makes each new action boundary safer by checking purpose, identity, connector scope, and prior failures before execution.</p>
|
|
140
|
+
|
|
141
|
+
<h2>Buyer message</h2>
|
|
142
|
+
<p>If your agent can authenticate, it has an identity. If it can call tools, it has a blast radius. ThumbGate gives the operator a pre-action gate for that blast radius.</p>
|
|
143
|
+
<p><a class="cta" href="/guide">Install ThumbGate locally</a></p>
|
|
144
|
+
</main>
|
|
145
|
+
</body>
|
|
146
|
+
</html>
|
|
@@ -0,0 +1,180 @@
|
|
|
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>Anthropomorphic Claim Gates for AI Agents — ThumbGate</title>
|
|
7
|
+
<meta name="description" content="How ThumbGate turns AI anthropomorphism research into a pre-action claim gate: do not let agents claim models understand, know, decide, or act human-like without measurement criteria and evidence.">
|
|
8
|
+
<link rel="canonical" href="https://thumbgate.ai/learn/anthropomorphic-claim-gates">
|
|
9
|
+
<link rel="llm-context" href="/llm-context.md" type="text/markdown">
|
|
10
|
+
<link rel="icon" type="image/png" href="/thumbgate-icon.png">
|
|
11
|
+
<script defer data-domain="thumbgate.ai" src="https://plausible.io/js/script.js"></script>
|
|
12
|
+
<meta property="og:title" content="Anthropomorphic Claim Gates for AI Agents">
|
|
13
|
+
<meta property="og:description" content="Stop agents from smuggling human-like claims into production decisions without explicit measurement criteria and evidence.">
|
|
14
|
+
<meta property="og:type" content="article">
|
|
15
|
+
<meta property="og:url" content="https://thumbgate.ai/learn/anthropomorphic-claim-gates">
|
|
16
|
+
<script type="application/ld+json">
|
|
17
|
+
{
|
|
18
|
+
"@context": "https://schema.org",
|
|
19
|
+
"@type": "TechArticle",
|
|
20
|
+
"headline": "Anthropomorphic Claim Gates for AI Agents",
|
|
21
|
+
"description": "A ThumbGate implementation pattern for blocking unsupported human-like or cognitive claims about AI systems until explicit measurement criteria and evidence are attached.",
|
|
22
|
+
"datePublished": "2026-06-20",
|
|
23
|
+
"dateModified": "2026-06-20",
|
|
24
|
+
"author": {
|
|
25
|
+
"@type": "Person",
|
|
26
|
+
"name": "Igor Ganapolsky",
|
|
27
|
+
"url": "https://github.com/IgorGanapolsky"
|
|
28
|
+
},
|
|
29
|
+
"publisher": {
|
|
30
|
+
"@type": "Organization",
|
|
31
|
+
"name": "ThumbGate",
|
|
32
|
+
"url": "https://thumbgate.ai"
|
|
33
|
+
},
|
|
34
|
+
"about": [
|
|
35
|
+
"AI agent governance",
|
|
36
|
+
"claim verification",
|
|
37
|
+
"anthropomorphism",
|
|
38
|
+
"pre-action gates"
|
|
39
|
+
],
|
|
40
|
+
"url": "https://thumbgate.ai/learn/anthropomorphic-claim-gates"
|
|
41
|
+
}
|
|
42
|
+
</script>
|
|
43
|
+
<script type="application/ld+json">
|
|
44
|
+
{
|
|
45
|
+
"@context": "https://schema.org",
|
|
46
|
+
"@type": "FAQPage",
|
|
47
|
+
"mainEntity": [
|
|
48
|
+
{
|
|
49
|
+
"@type": "Question",
|
|
50
|
+
"name": "What is an anthropomorphic claim gate?",
|
|
51
|
+
"acceptedAnswer": {
|
|
52
|
+
"@type": "Answer",
|
|
53
|
+
"text": "It is a pre-action check that blocks claims such as an AI agent understands, knows, decides, wants, or behaves human-like until the operator records explicit measurement criteria and evidence."
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"@type": "Question",
|
|
58
|
+
"name": "Why does this matter for AI agent governance?",
|
|
59
|
+
"acceptedAnswer": {
|
|
60
|
+
"@type": "Answer",
|
|
61
|
+
"text": "Unsupported cognitive claims can make teams over-trust an agent. ThumbGate turns those claims into verifiable gates before they influence production actions, audits, or buyer promises."
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
</script>
|
|
67
|
+
<style>
|
|
68
|
+
*, *::before, *::after { box-sizing: border-box; }
|
|
69
|
+
body {
|
|
70
|
+
margin: 0;
|
|
71
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
|
72
|
+
background: #0a0a0b;
|
|
73
|
+
color: #ececf0;
|
|
74
|
+
line-height: 1.65;
|
|
75
|
+
}
|
|
76
|
+
nav {
|
|
77
|
+
display: flex;
|
|
78
|
+
gap: 22px;
|
|
79
|
+
align-items: center;
|
|
80
|
+
padding: 16px 28px;
|
|
81
|
+
border-bottom: 1px solid #242428;
|
|
82
|
+
}
|
|
83
|
+
nav a { color: #a7a7b1; text-decoration: none; font-size: 0.95rem; }
|
|
84
|
+
nav a:hover { color: #22d3ee; }
|
|
85
|
+
.brand { color: #fff; font-weight: 700; display: inline-flex; gap: 8px; align-items: center; }
|
|
86
|
+
.brand img { width: 28px; height: 28px; }
|
|
87
|
+
main { max-width: 860px; margin: 0 auto; padding: 48px 22px 72px; }
|
|
88
|
+
h1 { font-size: clamp(2rem, 5vw, 3.6rem); line-height: 1.05; margin: 0 0 18px; max-width: 760px; }
|
|
89
|
+
h2 { color: #22d3ee; font-size: 1.45rem; margin: 42px 0 14px; }
|
|
90
|
+
p { margin: 0 0 16px; color: #d6d6de; }
|
|
91
|
+
a { color: #67e8f9; }
|
|
92
|
+
.lede { color: #a7a7b1; font-size: 1.15rem; max-width: 720px; }
|
|
93
|
+
.callout {
|
|
94
|
+
margin: 30px 0;
|
|
95
|
+
border: 1px solid #303039;
|
|
96
|
+
background: #151518;
|
|
97
|
+
border-radius: 8px;
|
|
98
|
+
padding: 22px;
|
|
99
|
+
}
|
|
100
|
+
.grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; margin: 24px 0; }
|
|
101
|
+
.card {
|
|
102
|
+
border: 1px solid #26262c;
|
|
103
|
+
background: #111114;
|
|
104
|
+
border-radius: 8px;
|
|
105
|
+
padding: 18px;
|
|
106
|
+
}
|
|
107
|
+
.card strong { display: block; margin-bottom: 8px; color: #fff; }
|
|
108
|
+
code, pre {
|
|
109
|
+
font-family: "SF Mono", "Cascadia Code", "JetBrains Mono", Consolas, monospace;
|
|
110
|
+
}
|
|
111
|
+
pre {
|
|
112
|
+
overflow-x: auto;
|
|
113
|
+
background: #050506;
|
|
114
|
+
border: 1px solid #25252a;
|
|
115
|
+
border-radius: 8px;
|
|
116
|
+
padding: 18px;
|
|
117
|
+
color: #d7f9ff;
|
|
118
|
+
}
|
|
119
|
+
.source-note { color: #8f8f99; font-size: 0.92rem; }
|
|
120
|
+
.cta {
|
|
121
|
+
display: inline-block;
|
|
122
|
+
margin-top: 16px;
|
|
123
|
+
padding: 11px 18px;
|
|
124
|
+
border-radius: 8px;
|
|
125
|
+
background: #22d3ee;
|
|
126
|
+
color: #031114;
|
|
127
|
+
text-decoration: none;
|
|
128
|
+
font-weight: 700;
|
|
129
|
+
}
|
|
130
|
+
@media (max-width: 720px) {
|
|
131
|
+
nav { padding: 14px 18px; gap: 14px; flex-wrap: wrap; }
|
|
132
|
+
main { padding-top: 32px; }
|
|
133
|
+
.grid { grid-template-columns: 1fr; }
|
|
134
|
+
}
|
|
135
|
+
</style>
|
|
136
|
+
</head>
|
|
137
|
+
<body>
|
|
138
|
+
<nav>
|
|
139
|
+
<a href="/" class="brand"><img src="/assets/brand/thumbgate-mark-inline.svg" alt="ThumbGate" width="28" height="28">ThumbGate</a>
|
|
140
|
+
<a href="/guide">Setup Guide</a>
|
|
141
|
+
<a href="/learn">Learn</a>
|
|
142
|
+
<a href="/compare/databricks-unity-ai-gateway">Databricks comparison</a>
|
|
143
|
+
</nav>
|
|
144
|
+
<main>
|
|
145
|
+
<h1>Anthropomorphic claim gates for AI agents</h1>
|
|
146
|
+
<p class="lede">A model may produce useful work. That does not mean it understands, knows, decides, wants, or behaves human-like. ThumbGate now treats those phrases as claims that need measurement criteria before they can influence a production decision.</p>
|
|
147
|
+
|
|
148
|
+
<div class="callout">
|
|
149
|
+
<p><strong>The high-ROI lesson:</strong> stop debating whether the agent is smart. Gate the claim. If an operator or agent says an AI system has a human-like attribute, require a tested attribute, interface/substrate context, evaluator, and evidence before accepting the statement.</p>
|
|
150
|
+
<p class="source-note">Research anchor: Adrian de Wynter's arXiv paper, <a href="https://arxiv.org/abs/2605.31514" rel="noopener">If LLMs Have Human-Like Attributes, Then So Does Age of Empires II</a>. A public X post by Rohan Paul surfaced the paper as a reminder to avoid treating LLMs as human-like without clear tests and narrower claims.</p>
|
|
151
|
+
</div>
|
|
152
|
+
|
|
153
|
+
<h2>What changes in ThumbGate</h2>
|
|
154
|
+
<p>ThumbGate's default claim-verification config now includes an anthropomorphic AI claim gate. It catches unsupported statements like:</p>
|
|
155
|
+
<div class="grid">
|
|
156
|
+
<div class="card"><strong>Blocked without evidence</strong> "The agent understands the user's intent."</div>
|
|
157
|
+
<div class="card"><strong>Blocked without evidence</strong> "The model decided this was safe."</div>
|
|
158
|
+
<div class="card"><strong>Blocked without evidence</strong> "This assistant is human-like on workflow judgment."</div>
|
|
159
|
+
<div class="card"><strong>Accepted after proof</strong> "The model matched human annotators on this narrow benchmark, with criteria and evaluator recorded."</div>
|
|
160
|
+
</div>
|
|
161
|
+
|
|
162
|
+
<h2>The rule shape</h2>
|
|
163
|
+
<p>The gate does not ban research or careful measurement. It blocks vague cognitive language until a proof action is recorded.</p>
|
|
164
|
+
<pre><code>track_action("anthropomorphic_claim_verified", {
|
|
165
|
+
criteria: "attribute under test",
|
|
166
|
+
interface: "where and how the model was evaluated",
|
|
167
|
+
evaluator: "script, benchmark, reviewer, or study",
|
|
168
|
+
evidence: "report, paper, trace, or benchmark output"
|
|
169
|
+
})</code></pre>
|
|
170
|
+
|
|
171
|
+
<h2>Why buyers care</h2>
|
|
172
|
+
<p>Unsupported human-like claims create audit risk. They make it easy for a team to over-trust a chatbot, agent, or orchestration layer and then explain a bad outcome with vibes instead of evidence.</p>
|
|
173
|
+
<p>For regulated, enterprise, and customer-facing workflows, this is a governance gap. ThumbGate turns the gap into a small deterministic check before the next claim is accepted.</p>
|
|
174
|
+
|
|
175
|
+
<h2>Where this fits</h2>
|
|
176
|
+
<p>Enterprise AI gateways can govern models, traffic, credentials, spend, and observability. ThumbGate handles the local pre-action surface: the moment an agent tries to claim something, execute a tool, publish a result, or tell the operator the work is safe.</p>
|
|
177
|
+
<p><a class="cta" href="/guide">Install ThumbGate locally</a></p>
|
|
178
|
+
</main>
|
|
179
|
+
</body>
|
|
180
|
+
</html>
|
package/public/learn.html
CHANGED
|
@@ -115,6 +115,18 @@
|
|
|
115
115
|
{
|
|
116
116
|
"@type": "ListItem",
|
|
117
117
|
"position": 13,
|
|
118
|
+
"url": "https://thumbgate.ai/learn/anthropomorphic-claim-gates",
|
|
119
|
+
"name": "Anthropomorphic Claim Gates for AI Agents"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"@type": "ListItem",
|
|
123
|
+
"position": 14,
|
|
124
|
+
"url": "https://thumbgate.ai/learn/agent-identity-connector-governance",
|
|
125
|
+
"name": "Agent Identity and Connector Governance"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"@type": "ListItem",
|
|
129
|
+
"position": 15,
|
|
118
130
|
"url": "https://thumbgate.ai/learn/pretix-stripe-connect-marketplaces",
|
|
119
131
|
"name": "Building a Pretix + Stripe Connect Plugin for Live-Music Venues"
|
|
120
132
|
},
|
|
@@ -409,6 +421,22 @@
|
|
|
409
421
|
<span class="article-tag">Cost Control</span>
|
|
410
422
|
</a>
|
|
411
423
|
|
|
424
|
+
<a href="/learn/anthropomorphic-claim-gates" class="article-card">
|
|
425
|
+
<h3>Anthropomorphic Claim Gates for AI Agents</h3>
|
|
426
|
+
<p>Do not let an agent say a model understands, knows, decides, or behaves human-like unless it can show the measurement criteria and evidence behind that claim.</p>
|
|
427
|
+
<span class="article-tag">Claim Verification</span>
|
|
428
|
+
<span class="article-tag">Research</span>
|
|
429
|
+
<span class="article-tag">Proof Gates</span>
|
|
430
|
+
</a>
|
|
431
|
+
|
|
432
|
+
<a href="/learn/agent-identity-connector-governance" class="article-card">
|
|
433
|
+
<h3>Agent Identity and Connector Governance</h3>
|
|
434
|
+
<p>Agents connected to Merge, Glean, MCP gateways, and enterprise apps are identities. Gate owner, credential, connector scope, DLP, audit, and purpose before they act.</p>
|
|
435
|
+
<span class="article-tag">Agent Identity</span>
|
|
436
|
+
<span class="article-tag">MCP Connectors</span>
|
|
437
|
+
<span class="article-tag">Least Privilege</span>
|
|
438
|
+
</a>
|
|
439
|
+
|
|
412
440
|
<a href="/learn/from-prototype-to-production" class="article-card">
|
|
413
441
|
<h3>From git init to v1.17.0 in 70 days: an honest ThumbGate build log</h3>
|
|
414
442
|
<p>70 days, 112 commits, 17 minor releases, 6k npm downloads, $0 cold-traffic revenue. The unedited story of taking ThumbGate from a one-line repo init to live production — including the part that's still broken.</p>
|
package/scripts/gate-stats.js
CHANGED
|
@@ -11,6 +11,11 @@ const PROJECT_ROOT = path.join(__dirname, '..');
|
|
|
11
11
|
const MANUAL_GATES_PATH = path.join(PROJECT_ROOT, 'config', 'gates', 'default.json');
|
|
12
12
|
const STATS_PATH = path.join(process.env.HOME || '/tmp', '.thumbgate', 'gate-stats.json');
|
|
13
13
|
|
|
14
|
+
function safeOccurrenceCount(value) {
|
|
15
|
+
const n = Number(value);
|
|
16
|
+
return Number.isFinite(n) && n > 0 ? n : 0;
|
|
17
|
+
}
|
|
18
|
+
|
|
14
19
|
function loadGatesFile(filePath) {
|
|
15
20
|
if (!fs.existsSync(filePath)) return [];
|
|
16
21
|
try {
|
|
@@ -39,16 +44,16 @@ function calculateStats() {
|
|
|
39
44
|
// Count total blocks/warns from occurrences in auto-promoted gates
|
|
40
45
|
const totalBlocked = autoGates
|
|
41
46
|
.filter((g) => g.action === 'block')
|
|
42
|
-
.reduce((sum, g) => sum + (g.occurrences
|
|
47
|
+
.reduce((sum, g) => sum + safeOccurrenceCount(g.occurrences), 0);
|
|
43
48
|
const totalWarned = autoGates
|
|
44
49
|
.filter((g) => g.action === 'warn')
|
|
45
|
-
.reduce((sum, g) => sum + (g.occurrences
|
|
50
|
+
.reduce((sum, g) => sum + safeOccurrenceCount(g.occurrences), 0);
|
|
46
51
|
|
|
47
52
|
// Top blocked gate. A configured block rule with zero occurrences is not a
|
|
48
53
|
// "top blocker"; only recorded block events should appear here.
|
|
49
54
|
const topBlocked = [...allGates]
|
|
50
|
-
.filter((g) => g.action === 'block' &&
|
|
51
|
-
.sort((a, b) => (b.occurrences
|
|
55
|
+
.filter((g) => g.action === 'block' && safeOccurrenceCount(g.occurrences) > 0)
|
|
56
|
+
.sort((a, b) => safeOccurrenceCount(b.occurrences) - safeOccurrenceCount(a.occurrences))
|
|
52
57
|
.at(0) || null;
|
|
53
58
|
|
|
54
59
|
// Last promotion event
|
|
@@ -105,7 +110,7 @@ function computeCalibration(gates) {
|
|
|
105
110
|
const calibration = [];
|
|
106
111
|
for (const gate of gates || []) {
|
|
107
112
|
if (!gate || !gate.id) continue;
|
|
108
|
-
const occurrences =
|
|
113
|
+
const occurrences = safeOccurrenceCount(gate.occurrences);
|
|
109
114
|
const action = gate.action || 'unknown';
|
|
110
115
|
// Only annotate gates with recorded occurrence data
|
|
111
116
|
if (occurrences === 0) continue;
|
|
@@ -258,6 +263,7 @@ module.exports = {
|
|
|
258
263
|
loadGatesFile,
|
|
259
264
|
tryComputeBayesErrorRate,
|
|
260
265
|
computeCalibration,
|
|
266
|
+
safeOccurrenceCount,
|
|
261
267
|
MANUAL_GATES_PATH,
|
|
262
268
|
STATS_PATH,
|
|
263
269
|
};
|