thumbgate 1.27.17 → 1.27.18
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/.claude-plugin/marketplace.json +85 -0
- package/.claude-plugin/plugin.json +3 -4
- package/.well-known/llms.txt +12 -33
- package/.well-known/mcp/server-card.json +8 -8
- package/README.md +30 -221
- package/adapters/chatgpt/openapi.yaml +1695 -0
- package/adapters/claude/.mcp.json +2 -2
- package/adapters/gemini/function-declarations.json +0 -1
- package/adapters/mcp/server-stdio.js +11 -263
- package/adapters/opencode/opencode.json +1 -1
- package/bench/thumbgate-bench.json +2 -2
- package/bin/cli.js +122 -1421
- package/bin/postinstall.js +27 -11
- package/config/gate-templates.json +0 -216
- package/config/gates/claim-verification.json +0 -12
- package/config/gates/default.json +2 -31
- package/config/github-about.json +2 -2
- package/config/mcp-allowlists.json +13 -23
- package/config/merge-quality-checks.json +1 -0
- package/config/model-candidates.json +6 -121
- package/openapi/openapi.yaml +0 -12
- package/package.json +99 -229
- package/public/blog.html +4 -4
- package/public/codex-plugin.html +20 -72
- package/public/compare.html +8 -31
- package/public/dashboard.html +166 -930
- package/public/federal.html +2 -2
- package/public/guide.html +9 -33
- package/public/index.html +116 -495
- package/public/learn.html +18 -191
- package/public/lessons.html +10 -168
- package/public/numbers.html +7 -7
- package/public/pro.html +11 -34
- package/scripts/agent-memory-lifecycle.js +0 -211
- package/scripts/agent-readiness.js +3 -167
- package/scripts/agent-reward-model.js +1 -53
- package/scripts/auto-promote-gates.js +10 -82
- package/scripts/auto-wire-hooks.js +0 -14
- package/scripts/billing.js +1 -93
- package/scripts/build-metadata.js +10 -50
- package/scripts/cli-feedback.js +6 -18
- package/scripts/cli-schema.js +0 -90
- package/scripts/cli-telemetry.js +1 -6
- package/scripts/commercial-offer.js +2 -82
- package/scripts/context-manager.js +6 -74
- package/scripts/dashboard.js +2 -68
- package/scripts/durability/step.js +3 -3
- package/scripts/export-databricks-bundle.js +1 -5
- package/scripts/export-dpo-pairs.js +2 -7
- package/scripts/feedback-loop.js +1 -145
- package/scripts/feedback-quality.js +0 -87
- package/scripts/filesystem-search.js +10 -35
- package/scripts/gate-stats.js +0 -89
- package/scripts/gates-engine.js +85 -1105
- package/scripts/gemini-embedding-policy.js +1 -2
- package/scripts/hook-runtime.js +14 -20
- package/scripts/hook-thumbgate-cache-updater.js +2 -18
- package/scripts/hybrid-feedback-context.js +7 -142
- package/scripts/lesson-inference.js +3 -8
- package/scripts/lesson-search.js +1 -17
- package/scripts/license.js +1 -0
- package/scripts/llm-client.js +9 -390
- package/scripts/local-model-profile.js +8 -15
- package/scripts/memory-scope-readiness.js +0 -159
- package/scripts/meta-agent-loop.js +0 -36
- package/scripts/operational-integrity.js +5 -39
- package/scripts/oss-pr-opportunity-scout.js +5 -35
- package/scripts/plausible-server-events.js +6 -9
- package/scripts/pro-local-dashboard.js +4 -4
- package/scripts/proxy-pointer-rag-guardrails.js +1 -42
- package/scripts/rate-limiter.js +13 -64
- package/scripts/secret-scanner.js +5 -44
- package/scripts/security-scanner.js +10 -260
- package/scripts/self-distill-agent.js +1 -3
- package/scripts/seo-gsd.js +2 -916
- package/scripts/statusline-cache-path.js +2 -17
- package/scripts/statusline-local-stats.js +1 -9
- package/scripts/statusline-meta.js +2 -28
- package/scripts/statusline.sh +4 -20
- package/scripts/telemetry-analytics.js +0 -357
- package/scripts/thompson-sampling.js +10 -31
- package/scripts/thumbgate-bench.js +1 -16
- package/scripts/thumbgate-search.js +19 -85
- package/scripts/tool-registry.js +1 -169
- package/scripts/vector-store.js +0 -45
- package/scripts/workflow-sentinel.js +53 -286
- package/scripts/workspace-evolver.js +2 -62
- package/src/api/server.js +290 -2578
- package/.claude/commands/dashboard.md +0 -15
- package/.claude/commands/thumbgate-blocked.md +0 -27
- package/.claude/commands/thumbgate-dashboard.md +0 -15
- package/.claude/commands/thumbgate-doctor.md +0 -30
- package/.claude/commands/thumbgate-guard.md +0 -36
- package/.claude/commands/thumbgate-protect.md +0 -30
- package/.claude/commands/thumbgate-rules.md +0 -30
- package/.well-known/agentic-verify.txt +0 -1
- package/adapters/gcp/dfcx-webhook-gate.js +0 -295
- package/adapters/letta/README.md +0 -41
- package/adapters/letta/thumbgate-letta-adapter.js +0 -133
- package/adapters/policy-engine/ethicore-guardian-client.js +0 -68
- package/adapters/policy-engine/thumbgate-policy-engine-adapter.js +0 -260
- package/bench/observability-eval-suite.json +0 -26
- package/bin/dashboard-cli.js +0 -7
- package/commands/dashboard.md +0 -15
- package/commands/thumbgate-dashboard.md +0 -15
- package/config/builtin-lessons.json +0 -23
- package/config/gate-classifier-routing.json +0 -98
- package/config/post-deploy-marketing-pages.json +0 -61
- package/public/about.html +0 -162
- package/public/agent-manager.html +0 -179
- package/public/agents-cost-savings.html +0 -153
- package/public/ai-malpractice-prevention.html +0 -818
- package/public/assets/brand/github-social-preview.png +0 -0
- package/public/assets/brand/thumbgate-icon-512.png +0 -0
- package/public/assets/brand/thumbgate-icon-pro-512.png +0 -0
- package/public/assets/brand/thumbgate-icon-team-512.png +0 -0
- package/public/assets/brand/thumbgate-logo-1200x360.png +0 -0
- package/public/assets/brand/thumbgate-logo-transparent.svg +0 -22
- package/public/assets/brand/thumbgate-mark-inline-v3.svg +0 -19
- package/public/assets/brand/thumbgate-mark-pro.svg +0 -23
- package/public/assets/brand/thumbgate-mark-team.svg +0 -26
- package/public/assets/brand/thumbgate-mark.svg +0 -21
- package/public/assets/brand/thumbgate-wordmark.svg +0 -20
- package/public/assets/claude-thumbgate-statusbar.svg +0 -8
- package/public/assets/codex-thumbgate-statusbar-test.svg +0 -9
- package/public/assets/legal-intake-control-flow.svg +0 -66
- package/public/brand/thumbgate-mark.svg +0 -19
- package/public/brand/thumbgate-og.svg +0 -16
- package/public/chatgpt-app.html +0 -330
- package/public/codex-enterprise.html +0 -123
- package/public/js/buyer-intent.js +0 -672
- package/public/pricing.html +0 -399
- package/scripts/action-receipts.js +0 -324
- package/scripts/activation-quickstart.js +0 -187
- package/scripts/agent-operations-planner.js +0 -621
- package/scripts/ai-component-inventory.js +0 -367
- package/scripts/async-eval-observability.js +0 -236
- package/scripts/audit.js +0 -65
- package/scripts/aws-blocks-guardrails.js +0 -228
- package/scripts/classifier-routing.js +0 -130
- package/scripts/dashboard-chat.js +0 -332
- package/scripts/feedback-aggregate.js +0 -281
- package/scripts/feedback-sanitizer.js +0 -105
- package/scripts/hob-pack.js +0 -591
- package/scripts/hook-stop-anti-claim.js +0 -301
- package/scripts/install-shim.js +0 -87
- package/scripts/mcp-oauth.js +0 -293
- package/scripts/noop-detect.js +0 -285
- package/scripts/omlx-smoke.js +0 -192
- package/scripts/parallel-workflow-orchestrator.js +0 -293
- package/scripts/plan-gate.js +0 -243
- package/scripts/plausible-domain-config.js +0 -99
- package/scripts/qa-scenario-planner.js +0 -136
- package/scripts/repeat-metric.js +0 -137
- package/scripts/secret-fixture-tokens.js +0 -61
- package/scripts/secret-redaction.js +0 -166
- package/scripts/self-harness-optimizer.js +0 -141
- package/scripts/self-healing-check.js +0 -193
- package/scripts/silent-failure-cluster.js +0 -531
- package/scripts/statusline-cache-read.js +0 -57
- package/scripts/sync-telemetry-from-prod.js +0 -374
- package/scripts/tool-contract-validator.js +0 -76
- package/scripts/trajectory-scorer.js +0 -63
- package/scripts/verify-marketing-pages-deployed.js +0 -195
- package/scripts/visitor-journey.js +0 -172
package/bin/postinstall.js
CHANGED
|
@@ -26,21 +26,37 @@ const DASHBOARD_URL = 'https://thumbgate.ai/dashboard?utm_source=npm&utm_medium=
|
|
|
26
26
|
|
|
27
27
|
process.stderr.write(`
|
|
28
28
|
╭─────────────────────────────────────────────────────╮
|
|
29
|
-
│ ThumbGate installed
|
|
29
|
+
│ ThumbGate installed. │
|
|
30
30
|
│ │
|
|
31
|
-
│
|
|
32
|
-
│
|
|
31
|
+
│ Every repeat-mistake your agent makes costs │
|
|
32
|
+
│ tokens. ThumbGate blocks known-bad tool calls │
|
|
33
|
+
│ BEFORE the model sees them — zero tokens spent │
|
|
34
|
+
│ on mistakes you've already corrected. │
|
|
33
35
|
│ │
|
|
34
|
-
│
|
|
35
|
-
│
|
|
36
|
+
│ Start free (local-only, never expires): │
|
|
37
|
+
│ npx thumbgate init │
|
|
38
|
+
│ npx thumbgate stats │
|
|
39
|
+
│ │
|
|
40
|
+
│ See your gates firing live: │
|
|
41
|
+
│ ${DASHBOARD_URL.slice(0, 47).padEnd(47, ' ')} │
|
|
36
42
|
╰─────────────────────────────────────────────────────╯
|
|
37
43
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
44
|
+
Pro — ${PRO_PRICE_LABEL}
|
|
45
|
+
Hosted lesson sync across all your machines.
|
|
46
|
+
Adapter matrix kept current for Claude Code,
|
|
47
|
+
Cursor, Codex, Gemini, Amp, Cline, OpenCode.
|
|
48
|
+
Org dashboard. DPO export. 24×7 ops.
|
|
49
|
+
Upgrade: ${PRO_CTA_URL}
|
|
50
|
+
Direct: ${PRO_MONTHLY_PAYMENT_LINK}
|
|
51
|
+
|
|
52
|
+
⚡ LAUNCH PROMO: 50% off first 3 months with code THUMB50
|
|
53
|
+
One-click (discount applied): https://buy.stripe.com/eVqeVd62o0aO19v7mb3sI3g
|
|
54
|
+
Limited to first 50 customers. ${new Date().getMonth() === 6 ? 'July 2026' : ''}
|
|
55
|
+
|
|
56
|
+
Team: ${TEAM_PRICE_LABEL}
|
|
57
|
+
Workflow Hardening Sprint intake:
|
|
58
|
+
${WORKFLOW_SPRINT_URL}
|
|
42
59
|
|
|
43
|
-
|
|
44
|
-
Keep Pro: ${PRO_CTA_URL}
|
|
60
|
+
Or run: npx thumbgate pro
|
|
45
61
|
|
|
46
62
|
`);
|
|
@@ -157,18 +157,6 @@
|
|
|
157
157
|
"roi": "Connects prevention with remediation: what credential lived where, who touched it, and whether rotation is required.",
|
|
158
158
|
"rollout": "Use with incident-response runbooks and secrets scanner output from GitGuardian or internal tooling."
|
|
159
159
|
},
|
|
160
|
-
{
|
|
161
|
-
"id": "require-local-dependency-vulnerability-scan",
|
|
162
|
-
"name": "Require local dependency vulnerability scan before installation",
|
|
163
|
-
"category": "Supply Chain Safety",
|
|
164
|
-
"signal": "👎",
|
|
165
|
-
"defaultAction": "block",
|
|
166
|
-
"severity": "high",
|
|
167
|
-
"pattern": "(npm install|pnpm add|yarn add|bun add|npm i|pnpm i|yarn i).*(vulnerable|cve|high|critical|osv|cve-lite)",
|
|
168
|
-
"problem": "Blocks package installations that introduce dependencies containing known high-severity or critical vulnerabilities (CVEs) before they are written to the lockfile.",
|
|
169
|
-
"roi": "Prevents AI agents from introducing vulnerable packages into the workspace. Complements zero-egress local-first scanning toolings (like OWASP CVE Lite CLI) directly at the terminal level.",
|
|
170
|
-
"rollout": "Enable on every repo where agents can install dependencies or modify lockfiles."
|
|
171
|
-
},
|
|
172
160
|
{
|
|
173
161
|
"id": "require-section-tree-before-multimodal-answer",
|
|
174
162
|
"name": "Require section tree before multimodal answers",
|
|
@@ -337,18 +325,6 @@
|
|
|
337
325
|
"roi": "Prevents expensive long-context inference rollouts from reusing stale cache state or corrupting speculative decode paths.",
|
|
338
326
|
"rollout": "Enable before raising context windows, switching cache implementations, or deploying ShadowRadix-style prefix caching."
|
|
339
327
|
},
|
|
340
|
-
{
|
|
341
|
-
"id": "require-hybrid-inference-routing-approval",
|
|
342
|
-
"name": "Require approval for hybrid cloud escalation on sensitive data",
|
|
343
|
-
"category": "Hybrid Inference Governance",
|
|
344
|
-
"signal": "👎",
|
|
345
|
-
"defaultAction": "block",
|
|
346
|
-
"severity": "high",
|
|
347
|
-
"pattern": "(hybrid|local-cloud|perplexity.*hybrid|personal computer).*(escalat|cloud|send to cloud|route to server).*(sensitive|secret|pii|customer|confidential|codebase)",
|
|
348
|
-
"problem": "Hybrid local-cloud orchestrators (e.g. Perplexity Computex 2026) must not silently escalate sensitive context (code, feedback, lessons, PII) to cloud models without explicit approval or local-only enforcement.",
|
|
349
|
-
"roi": "High: Prevents data exfil in agentic workflows while still allowing hybrid cost/privacy wins. Critical as more agents adopt local-cloud routing (Personal Computer, AI PCs). Captures high-value feedback for custom hybrid rules.",
|
|
350
|
-
"rollout": "Start as block for paths matching secrets/env/customer data; promote to warn after baseline hybrid agent sessions. Pair with perplexity/hybrid-* model candidates and adapters/perplexity/HYBRID.md."
|
|
351
|
-
},
|
|
352
328
|
{
|
|
353
329
|
"id": "checkpoint-speculative-decoding-acceptance",
|
|
354
330
|
"name": "Checkpoint speculative decoding acceptance",
|
|
@@ -468,198 +444,6 @@
|
|
|
468
444
|
"problem": "Blocks background agents from cloning, building, testing, or publishing unless they run in an isolated durable environment with logs.",
|
|
469
445
|
"roi": "Lets the team pursue unattended revenue and engineering workflows without turning local developer machines into the execution boundary.",
|
|
470
446
|
"rollout": "Enable for every agent that can run tests, push branches, deploy, publish content, change billing, or touch customer data."
|
|
471
|
-
},
|
|
472
|
-
{
|
|
473
|
-
"id": "block-unauthorized-practice-of-law",
|
|
474
|
-
"name": "Block unauthorized practice of law",
|
|
475
|
-
"category": "Legal Intake Safety",
|
|
476
|
-
"signal": "👎",
|
|
477
|
-
"defaultAction": "block",
|
|
478
|
-
"severity": "critical",
|
|
479
|
-
"pattern": "(outcome prediction|jurisdictional recommendation|[Yy]ou\\s+(should|could|might)\\s+(file|sue|claim)|strong case|likely\\s+(prevail|win|succeed))",
|
|
480
|
-
"problem": "Stops advice-shaped intake replies under ABA Rule 5.5.",
|
|
481
|
-
"roi": "Prevents malpractice exposure before delivery.",
|
|
482
|
-
"rollout": "Enable on every AI intake channel."
|
|
483
|
-
},
|
|
484
|
-
{
|
|
485
|
-
"id": "require-conflict-check-before-intake",
|
|
486
|
-
"name": "Require conflict check before intake continues",
|
|
487
|
-
"category": "Legal Intake Safety",
|
|
488
|
-
"signal": "👎",
|
|
489
|
-
"defaultAction": "block",
|
|
490
|
-
"severity": "critical",
|
|
491
|
-
"pattern": "(collect_case_facts|schedule_consultation|intake_continue).*(missing|no|unchecked).*(conflict|adverse[_-]party|clearance)",
|
|
492
|
-
"problem": "Requires adverse-party clearance before sensitive facts.",
|
|
493
|
-
"roi": "Catches conflicts before privileged facts cross ethical walls.",
|
|
494
|
-
"rollout": "Use the firm's conflicts API or a synthetic pilot fixture."
|
|
495
|
-
},
|
|
496
|
-
{
|
|
497
|
-
"id": "block-privileged-content-egress",
|
|
498
|
-
"name": "Block privileged content egress",
|
|
499
|
-
"category": "Legal Intake Safety",
|
|
500
|
-
"signal": "👎",
|
|
501
|
-
"defaultAction": "block",
|
|
502
|
-
"severity": "critical",
|
|
503
|
-
"pattern": "(send_email|api_call|external_request|schedule|crm_update).*(privileged|attorney[_-]client|work[_-]product|matter[_-]id|confidential)",
|
|
504
|
-
"problem": "Blocks outbound actions with privilege markers.",
|
|
505
|
-
"roi": "Prevents single-action privilege waiver.",
|
|
506
|
-
"rollout": "Define markers, start with hard block, then add in-tenant reroute."
|
|
507
|
-
},
|
|
508
|
-
{
|
|
509
|
-
"id": "require-approved-disclaimer-before-response",
|
|
510
|
-
"name": "Require approved disclaimer before response",
|
|
511
|
-
"category": "Legal Intake Safety",
|
|
512
|
-
"signal": "👎",
|
|
513
|
-
"defaultAction": "block",
|
|
514
|
-
"severity": "high",
|
|
515
|
-
"pattern": "(intake_response|client_reply).*((missing|no)\\s*(disclaimer|disclosure|non[_-]engagement)|(disclaimer|disclosure|non[_-]engagement)\\s*[:=]?\\s*(missing|none|no))",
|
|
516
|
-
"problem": "Requires firm-approved non-engagement language.",
|
|
517
|
-
"roi": "Reduces inadvertent client-relationship risk.",
|
|
518
|
-
"rollout": "Load approved disclaimer during pilot."
|
|
519
|
-
},
|
|
520
|
-
{
|
|
521
|
-
"id": "restrict-model-endpoint-to-approved-list",
|
|
522
|
-
"name": "Restrict model endpoint to approved list",
|
|
523
|
-
"category": "Legal Intake Safety",
|
|
524
|
-
"signal": "👎",
|
|
525
|
-
"defaultAction": "block",
|
|
526
|
-
"severity": "high",
|
|
527
|
-
"pattern": "(model_call|llm_request|api_endpoint).*(unapproved|unknown|public|consumer)",
|
|
528
|
-
"problem": "Blocks unapproved model endpoints.",
|
|
529
|
-
"roi": "Keeps data inside approved vendor boundaries.",
|
|
530
|
-
"rollout": "Allowlist endpoints during pilot."
|
|
531
|
-
},
|
|
532
|
-
{
|
|
533
|
-
"id": "require-attorney-review-before-routing",
|
|
534
|
-
"name": "Require attorney review before case routing",
|
|
535
|
-
"category": "Legal Intake Safety",
|
|
536
|
-
"signal": "👎",
|
|
537
|
-
"defaultAction": "block",
|
|
538
|
-
"severity": "high",
|
|
539
|
-
"pattern": "(route_to_attorney|assign_practice_area|schedule_consultation).*(no|missing).*(review|approval|supervisor)",
|
|
540
|
-
"problem": "Requires review before routing or scheduling.",
|
|
541
|
-
"roi": "Prevents bad prospect routing.",
|
|
542
|
-
"rollout": "Start strict; relax after pilot evidence."
|
|
543
|
-
},
|
|
544
|
-
{
|
|
545
|
-
"id": "block-dynamic-tool-creation-without-approval",
|
|
546
|
-
"name": "Block dynamic tool creation without approval",
|
|
547
|
-
"category": "Claw-Style Enterprise Agent Governance",
|
|
548
|
-
"signal": "👎",
|
|
549
|
-
"defaultAction": "block",
|
|
550
|
-
"severity": "critical",
|
|
551
|
-
"pattern": "(claw|enterpriseclaw|dynamic tool|runtime tool|create_tool|self.*evolving).*(create|generate|define).*(tool|action|capability|script)",
|
|
552
|
-
"problem": "Claw-style agents (Automation Anywhere EnterpriseClaw, inspired by Nvidia OpenShell) can create tools at runtime. This must be gated to prevent arbitrary code execution or exfil.",
|
|
553
|
-
"roi": "High: Prevents one of the most dangerous capabilities of autonomous enterprise agents while allowing safe dynamic extension under governance. Directly addresses the 'governance catching up' gap called out in coverage.",
|
|
554
|
-
"rollout": "Block by default for claw agents; allowlist specific safe tool patterns after review. Capture feedback on every dynamic creation attempt."
|
|
555
|
-
},
|
|
556
|
-
{
|
|
557
|
-
"id": "require-review-for-screen-ui-interaction",
|
|
558
|
-
"name": "Require review for screen/UI interaction by agents",
|
|
559
|
-
"category": "Claw-Style Enterprise Agent Governance",
|
|
560
|
-
"signal": "👎",
|
|
561
|
-
"defaultAction": "block",
|
|
562
|
-
"severity": "high",
|
|
563
|
-
"pattern": "(claw|screen|ui|computer use|mouse|keyboard|click|type|interact).*(screen|desktop|app|gui|human.*like)",
|
|
564
|
-
"problem": "Claw-style agents interact directly with computer screens and apps like a human operator. This creates high risk of unintended actions, data leaks via UI, or compliance violations.",
|
|
565
|
-
"roi": "Prevents agent-driven UI automation from bypassing existing controls. Essential for enterprise RPA + AI agent convergence (Automation Anywhere core).",
|
|
566
|
-
"rollout": "Require human-in-loop or explicit policy approval for any claw screen interaction on production systems. Log all such actions for audit."
|
|
567
|
-
},
|
|
568
|
-
{
|
|
569
|
-
"id": "enforce-agent-identity-separation",
|
|
570
|
-
"name": "Enforce separate agent identity and audit trail",
|
|
571
|
-
"category": "Claw-Style Enterprise Agent Governance",
|
|
572
|
-
"signal": "👎",
|
|
573
|
-
"defaultAction": "block",
|
|
574
|
-
"severity": "high",
|
|
575
|
-
"pattern": "(agent identity|agent.*credential|human.*credential|impersonat|audit.*agent|agent.*audit).*(missing|no|same as human|not separated)",
|
|
576
|
-
"problem": "Claw agents (and partners like Okta in EnterpriseClaw) require first-class agent identities separate from humans so actions are auditable as agent actions, not human ones. Using human creds hides responsibility.",
|
|
577
|
-
"roi": "Critical for compliance, forensics, and feedback loops. Enables proper capture of agent-specific lessons and prevention rules. Matches industry push (Okta, etc.).",
|
|
578
|
-
"rollout": "Block any claw or autonomous agent action that authenticates as a human user. Require dedicated agent service accounts / identities with scoped permissions."
|
|
579
|
-
},
|
|
580
|
-
{
|
|
581
|
-
"id": "gate-claw-file-system-access",
|
|
582
|
-
"name": "Gate claw-style agent file system access",
|
|
583
|
-
"category": "Claw-Style Enterprise Agent Governance",
|
|
584
|
-
"signal": "👎",
|
|
585
|
-
"defaultAction": "block",
|
|
586
|
-
"severity": "critical",
|
|
587
|
-
"pattern": "(claw|file system|fs access|read file|write file|list dir|device access).*(local|shared|on-prem|airgap)",
|
|
588
|
-
"problem": "Claw agents have broad device-level (local/shared) file system access. Must be strictly gated, especially in on-prem/air-gapped enterprise environments where most data lives.",
|
|
589
|
-
"roi": "Directly supports the hybrid/on-prem reality emphasized in EnterpriseClaw coverage. Prevents broad access from becoming broad exfil or corruption. Ties to ThumbGate's existing path globs and protected files.",
|
|
590
|
-
"rollout": "Use existing protected-paths + new claw-specific rules. Start with read-only for most, explicit approval for writes on sensitive dirs."
|
|
591
|
-
},
|
|
592
|
-
{
|
|
593
|
-
"id": "block-unauthorized-multi-channel-posts",
|
|
594
|
-
"name": "Block unauthorized multi-channel posts by Hermes Agent",
|
|
595
|
-
"category": "Nous Research Hermes Agent Governance",
|
|
596
|
-
"signal": "👎",
|
|
597
|
-
"defaultAction": "block",
|
|
598
|
-
"severity": "high",
|
|
599
|
-
"pattern": "(slack|telegram|discord|signal|whatsapp|send_message|post_message|channel_post).*(credentials|api_key|token|auth|password|unreviewed|unapproved)",
|
|
600
|
-
"problem": "Hermes Agent can post directly to messaging platforms. This gate prevents leaked credentials or unapproved messages from being posted publicly.",
|
|
601
|
-
"roi": "High: Prevents public-facing compliance violations, credential leaks, and messaging spam across Telegram, Slack, and Discord.",
|
|
602
|
-
"rollout": "Enable by default for agents connected to external communication channels."
|
|
603
|
-
},
|
|
604
|
-
{
|
|
605
|
-
"id": "prevent-infinite-skill-synthesis-loops",
|
|
606
|
-
"name": "Prevent infinite skill synthesis loops",
|
|
607
|
-
"category": "Nous Research Hermes Agent Governance",
|
|
608
|
-
"signal": "👎",
|
|
609
|
-
"defaultAction": "block",
|
|
610
|
-
"severity": "medium",
|
|
611
|
-
"pattern": "(hermes|skill synthesis|write skill|synthesize skill|evolve skill|self-improve).*(loop|repeated|stuck|regenerate|no progress)",
|
|
612
|
-
"problem": "Hermes Agent can get stuck repeatedly rewriting or generating the same skills in Markdown format without resolving the user's core task.",
|
|
613
|
-
"roi": "Reduces token burn and infinite loop execution loops by gating repeated skill write attempts.",
|
|
614
|
-
"rollout": "Warn/block when skill edits occur more than 3 times within the same session context."
|
|
615
|
-
},
|
|
616
|
-
{
|
|
617
|
-
"id": "validate-synthesized-skills-against-rules",
|
|
618
|
-
"name": "Validate synthesized skills against prevention rules",
|
|
619
|
-
"category": "Nous Research Hermes Agent Governance",
|
|
620
|
-
"signal": "👎",
|
|
621
|
-
"defaultAction": "block",
|
|
622
|
-
"severity": "critical",
|
|
623
|
-
"pattern": "(write skill|synthesize skill|create skill|update skill).*(override|bypass|ignore|violate).*(prevention rule|gate|thumbgate)",
|
|
624
|
-
"problem": "Hermes Agent's self-improvement loop can write new skills that conflict with or attempt to bypass established ThumbGate prevention rules.",
|
|
625
|
-
"roi": "Preserves security invariants by ensuring that synthesized skills never write code patterns blocked by active ThumbGate rules.",
|
|
626
|
-
"rollout": "Scan synthesized skill markdown content for pattern overlap with active prevention rules before writing to the skills directory."
|
|
627
|
-
},
|
|
628
|
-
{
|
|
629
|
-
"id": "require-human-in-the-loop-pause",
|
|
630
|
-
"name": "Enforce Human-in-the-Loop pause for critical decisions",
|
|
631
|
-
"category": "AI Engineering Stack Safety",
|
|
632
|
-
"signal": "👎",
|
|
633
|
-
"defaultAction": "block",
|
|
634
|
-
"severity": "high",
|
|
635
|
-
"pattern": "(agent_sdk|openrouter_sdk|human_in_loop|auto_resolve).*(auto_resolve|bypass|skip_pause|critical_action)",
|
|
636
|
-
"problem": "Prevents autonomous agents using the Agent SDK from auto-resolving critical decisions (such as model migration, credential rotations, or financial transactions) without pausing for explicit human approval.",
|
|
637
|
-
"roi": "Ensures human oversight remains functional on highest-risk actions, preventing the agent from acting entirely unsupervised on critical gates.",
|
|
638
|
-
"rollout": "Turn on for all production deployments utilizing OpenRouter or other Agent SDKs with auto-resolve capabilities."
|
|
639
|
-
},
|
|
640
|
-
{
|
|
641
|
-
"id": "careful-mode",
|
|
642
|
-
"name": "Enforce careful mode for destructive commands",
|
|
643
|
-
"category": "On-Demand Dynamic Gating",
|
|
644
|
-
"signal": "👎",
|
|
645
|
-
"defaultAction": "block",
|
|
646
|
-
"severity": "critical",
|
|
647
|
-
"pattern": "(rm\\s+-rf|drop\\s+table|force-push|git\\s+push\\s+-[fF]|git\\s+push\\s+--force|kubectl\\s+delete)",
|
|
648
|
-
"problem": "Blocks dangerous or destructive command sequences (rm -rf, DROP TABLE, force-push, kubectl delete) during sessions where careful mode is activated.",
|
|
649
|
-
"roi": "Protects production environments and main branches from accidental destructive commands executed by autonomous agents.",
|
|
650
|
-
"rollout": "Enable dynamically on-demand using /careful or env overrides when executing in sensitive or production workspaces."
|
|
651
|
-
},
|
|
652
|
-
{
|
|
653
|
-
"id": "freeze-mode",
|
|
654
|
-
"name": "Freeze directory edits",
|
|
655
|
-
"category": "On-Demand Dynamic Gating",
|
|
656
|
-
"signal": "👎",
|
|
657
|
-
"defaultAction": "block",
|
|
658
|
-
"severity": "high",
|
|
659
|
-
"pattern": "^freeze_edit_outside_path.*",
|
|
660
|
-
"problem": "Blocks any file edit or write tool call that is not within a specified active/target directory.",
|
|
661
|
-
"roi": "Restricts agent edits to a controlled workspace, preventing scope drift, accidental modification of configuration or source files, and unwanted global refactors during focused task debugging.",
|
|
662
|
-
"rollout": "Enable dynamically on-demand using /freeze to specify the only path(s) the agent is allowed to write to during the session."
|
|
663
447
|
}
|
|
664
448
|
]
|
|
665
449
|
}
|
|
@@ -24,18 +24,6 @@
|
|
|
24
24
|
"requiredActions": ["on_device_verified"],
|
|
25
25
|
"message": "You claimed on-device verification without evidence. Capture the proof first, then call track_action('on_device_verified').",
|
|
26
26
|
"createdAt": 1774972800000
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
"pattern": "(github|repo|repository).*(about|metadata|description|topics?).*(updated|verified|fixed|match(?:es|ed)?)|(about|metadata|description|topics?).*(updated|verified|fixed|match(?:es|ed)?).*(github|repo|repository)",
|
|
30
|
-
"requiredActions": ["github_metadata_verified"],
|
|
31
|
-
"message": "You claimed GitHub repository metadata was updated or verified without source-of-truth evidence. Read it back with gh api/gh repo view and rendered HTML, then call track_action('github_metadata_verified').",
|
|
32
|
-
"createdAt": 1780677400000
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"pattern": "(money|payment|charge|checkout|revenue|price|pricing|invoice|billing|tax|sales tax|inventory|stock|permission|access|customer-facing|customer facing).*(correct|accurate|verified|valid|matches|working|fixed|resolved|calculated|configured)|(correct|accurate|verified|valid|matches|working|fixed|resolved|calculated|configured).*(money|payment|charge|checkout|revenue|price|pricing|invoice|billing|tax|sales tax|inventory|stock|permission|access|customer-facing|customer facing)",
|
|
36
|
-
"requiredActions": ["commercial_truth_verified"],
|
|
37
|
-
"message": "You claimed a commercial-data fact (money, tax, inventory, permissions, or customer-facing state) without external source-of-truth evidence. Read the authoritative system first, then call track_action('commercial_truth_verified').",
|
|
38
|
-
"createdAt": 1781640000000
|
|
39
27
|
}
|
|
40
28
|
]
|
|
41
29
|
}
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"id": "task-scope-required",
|
|
24
24
|
"layer": "Decisions",
|
|
25
25
|
"toolNames": ["Bash"],
|
|
26
|
-
"pattern": "^(git\\s+(add|commit|push)|gh\\s+pr\\s+(create|merge)|gh\\s+
|
|
26
|
+
"pattern": "^(git\\s+(add|commit|push)|gh\\s+pr\\s+(create|merge)|gh\\s+release\\s+create|git\\s+tag\\b|npm\\s+publish|yarn\\s+publish|pnpm\\s+publish)",
|
|
27
27
|
"requireTaskScope": true,
|
|
28
28
|
"action": "block",
|
|
29
29
|
"message": "Git write, PR, release, and publish operations require an explicit task scope.",
|
|
@@ -72,15 +72,6 @@
|
|
|
72
72
|
"message": "PR creation requires explicit 'pr_create_allowed' satisfaction with evidence of user permission.",
|
|
73
73
|
"severity": "high"
|
|
74
74
|
},
|
|
75
|
-
{
|
|
76
|
-
"id": "gh-api-pr-create-restricted",
|
|
77
|
-
"layer": "Identity",
|
|
78
|
-
"pattern": "gh\\s+api\\b(?=.*(?:/pulls\\b|repos/[^\\s]+/[^\\s]+/pulls\\b))(?=.*(?:-f\\b|--field\\b|-F\\b|--raw-field\\b|--method\\s+POST\\b|-X\\s+POST\\b))",
|
|
79
|
-
"action": "block",
|
|
80
|
-
"unless": "pr_create_allowed",
|
|
81
|
-
"message": "GitHub API PR creation requires explicit 'pr_create_allowed' satisfaction with evidence of user permission. Use the same approval path as gh pr create.",
|
|
82
|
-
"severity": "high"
|
|
83
|
-
},
|
|
84
75
|
{
|
|
85
76
|
"id": "gh-pr-merge-restricted",
|
|
86
77
|
"layer": "Identity",
|
|
@@ -94,7 +85,7 @@
|
|
|
94
85
|
"id": "branch-governance-required",
|
|
95
86
|
"layer": "Decisions",
|
|
96
87
|
"toolNames": ["Bash"],
|
|
97
|
-
"pattern": "^(gh\\s+pr\\s+(create|merge)|gh\\s+
|
|
88
|
+
"pattern": "^(gh\\s+pr\\s+(create|merge)|gh\\s+release\\s+create|git\\s+tag\\b|npm\\s+publish|yarn\\s+publish|pnpm\\s+publish)",
|
|
98
89
|
"requireBranchGovernance": true,
|
|
99
90
|
"action": "block",
|
|
100
91
|
"message": "PR, release, and publish actions require explicit branch governance.",
|
|
@@ -377,26 +368,6 @@
|
|
|
377
368
|
"message": "Self-protection: agent cannot modify hook registrations.",
|
|
378
369
|
"severity": "critical",
|
|
379
370
|
"compliance": ["NIST-AC-3", "OWASP-A01", "SOC2-CC6.1"]
|
|
380
|
-
},
|
|
381
|
-
{
|
|
382
|
-
"id": "on-demand-careful-mode",
|
|
383
|
-
"layer": "Execution",
|
|
384
|
-
"toolNames": ["Bash"],
|
|
385
|
-
"pattern": "(rm\\s+-rf|drop\\s+table|force-push|git\\s+push\\s+-[fF]|git\\s+push\\s+--force|kubectl\\s+delete)",
|
|
386
|
-
"action": "block",
|
|
387
|
-
"when": { "constraints": { "careful_mode": true } },
|
|
388
|
-
"message": "Careful mode is active. Dangerous command is blocked.",
|
|
389
|
-
"severity": "critical"
|
|
390
|
-
},
|
|
391
|
-
{
|
|
392
|
-
"id": "on-demand-freeze-mode",
|
|
393
|
-
"layer": "Decisions",
|
|
394
|
-
"toolNames": ["Edit", "Write", "MultiEdit"],
|
|
395
|
-
"pattern": ".*",
|
|
396
|
-
"action": "block",
|
|
397
|
-
"when": { "constraints": { "freeze_mode": true } },
|
|
398
|
-
"message": "Freeze mode is active. Edits outside the frozen directory are blocked.",
|
|
399
|
-
"severity": "high"
|
|
400
371
|
}
|
|
401
372
|
]
|
|
402
373
|
}
|
package/config/github-about.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"repo": "IgorGanapolsky/ThumbGate",
|
|
3
3
|
"repositoryUrl": "https://github.com/IgorGanapolsky/ThumbGate",
|
|
4
|
-
"homepageUrl": "https://thumbgate.
|
|
4
|
+
"homepageUrl": "https://thumbgate-production.up.railway.app",
|
|
5
5
|
"githubDescription": "Agent governance for ThumbGate: 👍/👎 become Pre-Action Checks that block repeat mistakes before code, money, or customer systems change.",
|
|
6
|
-
"metaDescription": "
|
|
6
|
+
"metaDescription": "Stop paying for the same AI mistake twice. ThumbGate is machine-speed pre-action defense for AI coding agents and vibe coding workflows: 👍 thumbs up and 👎 thumbs down become history-aware lessons, shared lessons and org visibility, actionable remediations, agent surface inventory, and Pre-Action Checks that block repeat mistakes before the next tool call across Claude Code, Cursor, Codex, Gemini, Amp, Cline, and OpenCode.",
|
|
7
7
|
"topics": [
|
|
8
8
|
"thumbgate",
|
|
9
9
|
"pre-action-checks",
|
|
@@ -4,9 +4,6 @@
|
|
|
4
4
|
"default": [
|
|
5
5
|
"recall",
|
|
6
6
|
"unified_context",
|
|
7
|
-
"set_task_scope",
|
|
8
|
-
"get_scope_state",
|
|
9
|
-
"satisfy_gate",
|
|
10
7
|
"capture_feedback",
|
|
11
8
|
"open_feedback_session",
|
|
12
9
|
"append_feedback_context",
|
|
@@ -39,13 +36,13 @@
|
|
|
39
36
|
"context_provenance",
|
|
40
37
|
"commerce_recall",
|
|
41
38
|
"generate_skill",
|
|
39
|
+
"satisfy_gate",
|
|
40
|
+
"set_task_scope",
|
|
41
|
+
"get_scope_state",
|
|
42
42
|
"set_branch_governance",
|
|
43
43
|
"get_branch_governance",
|
|
44
44
|
"approve_protected_action",
|
|
45
45
|
"track_action",
|
|
46
|
-
"detect_noop",
|
|
47
|
-
"record_action_receipt",
|
|
48
|
-
"get_action_receipts",
|
|
49
46
|
"verify_claim",
|
|
50
47
|
"check_operational_integrity",
|
|
51
48
|
"workflow_sentinel",
|
|
@@ -71,19 +68,15 @@
|
|
|
71
68
|
"perplexity_search",
|
|
72
69
|
"perplexity_ask",
|
|
73
70
|
"perplexity_research",
|
|
74
|
-
"perplexity_reason"
|
|
75
|
-
"suggest_fix"
|
|
71
|
+
"perplexity_reason"
|
|
76
72
|
],
|
|
77
73
|
"essential": [
|
|
78
|
-
"recall",
|
|
79
|
-
"unified_context",
|
|
80
|
-
"set_task_scope",
|
|
81
|
-
"get_scope_state",
|
|
82
|
-
"satisfy_gate",
|
|
83
74
|
"capture_feedback",
|
|
84
75
|
"open_feedback_session",
|
|
85
76
|
"append_feedback_context",
|
|
86
77
|
"finalize_feedback_session",
|
|
78
|
+
"recall",
|
|
79
|
+
"unified_context",
|
|
87
80
|
"search_lessons",
|
|
88
81
|
"retrieve_lessons",
|
|
89
82
|
"search_thumbgate",
|
|
@@ -96,6 +89,8 @@
|
|
|
96
89
|
"plan_chatgpt_ads_readiness",
|
|
97
90
|
"reflect_on_feedback",
|
|
98
91
|
"prevention_rules",
|
|
92
|
+
"set_task_scope",
|
|
93
|
+
"get_scope_state",
|
|
99
94
|
"set_branch_governance",
|
|
100
95
|
"get_branch_governance",
|
|
101
96
|
"approve_protected_action",
|
|
@@ -109,8 +104,7 @@
|
|
|
109
104
|
"report_product_issue",
|
|
110
105
|
"require_evidence_for_claim",
|
|
111
106
|
"session_report",
|
|
112
|
-
"generate_operator_artifact"
|
|
113
|
-
"suggest_fix"
|
|
107
|
+
"generate_operator_artifact"
|
|
114
108
|
],
|
|
115
109
|
"commerce": [
|
|
116
110
|
"capture_feedback",
|
|
@@ -129,8 +123,7 @@
|
|
|
129
123
|
"workflow_sentinel",
|
|
130
124
|
"prevention_rules",
|
|
131
125
|
"feedback_stats",
|
|
132
|
-
"feedback_summary"
|
|
133
|
-
"suggest_fix"
|
|
126
|
+
"feedback_summary"
|
|
134
127
|
],
|
|
135
128
|
"readonly": [
|
|
136
129
|
"recall",
|
|
@@ -171,8 +164,7 @@
|
|
|
171
164
|
"session_report",
|
|
172
165
|
"generate_operator_artifact",
|
|
173
166
|
"perplexity_search",
|
|
174
|
-
"perplexity_ask"
|
|
175
|
-
"suggest_fix"
|
|
167
|
+
"perplexity_ask"
|
|
176
168
|
],
|
|
177
169
|
"dispatch": [
|
|
178
170
|
"recall",
|
|
@@ -212,8 +204,7 @@
|
|
|
212
204
|
"session_report",
|
|
213
205
|
"generate_operator_artifact",
|
|
214
206
|
"perplexity_search",
|
|
215
|
-
"perplexity_ask"
|
|
216
|
-
"suggest_fix"
|
|
207
|
+
"perplexity_ask"
|
|
217
208
|
],
|
|
218
209
|
"locked": [
|
|
219
210
|
"feedback_summary",
|
|
@@ -237,8 +228,7 @@
|
|
|
237
228
|
"workflow_sentinel",
|
|
238
229
|
"settings_status",
|
|
239
230
|
"native_messaging_audit",
|
|
240
|
-
"generate_operator_artifact"
|
|
241
|
-
"suggest_fix"
|
|
231
|
+
"generate_operator_artifact"
|
|
242
232
|
]
|
|
243
233
|
}
|
|
244
234
|
}
|