tf-approval-gate
TF Approval Gate
Ein MCP-Server, der es KI-Codierungsagenten (Claude Code, Cursor usw.) ermöglicht, Terraform-Änderungen zu planen, auf Richtlinienkonformität zu prüfen und Kosten zu schätzen – es aber strukturell unmöglich macht, dass der Agent terraform apply ausführt, ohne dass zuvor ein echter Mensch in Slack auf „Genehmigen" klickt.
Warum
KI-Agenten können heute Terraform direkt gegen echte Cloud-Konten schreiben und ausführen. Ein Agent, der eigenständig terraform apply ausführen kann, kann Produktionsinfrastruktur stillschweigend zerstören oder falsch konfigurieren – ohne dass ein Mensch im Loop ist. TF Approval Gate schließt diese Lücke: Jedes apply erfordert ein signiertes, einmalig verwendbares Token, das nur ein echter Mensch per Slack-Klick (oder im Dev-Modus ein echter Mensch am Terminal) ausstellen kann. Die Behauptung des Agenten, „der Mensch habe genehmigt", wird niemals vertraut – der Server verifiziert alles selbst erneut.
Related MCP server: Hivelore
So funktioniert es
Der Agent bearbeitet
.tf-Dateien und ruft danntf_propose_changeauf – führtterraform plan, Checkov (+ OPA, falls konfiguriert) und Infracost (falls konfiguriert) aus und liefert einen gebündelten Vorschlag mit einer Empfehlung safe/needs_review/blocked zurück.Der Agent ruft
tf_request_approvalauf – postet den Diff + Richtlinienbefunde + Kosten mit Genehmigen/Ablehnen-Buttons nach Slack (oder zeigt imAPPROVAL_MODE=clieine Eingabeaufforderung im Terminal des Servers an). Weigert sich, überhaupt zu posten, wenn Richtlinienbefunde blockierend sind.Der Agent pollt
tf_check_approval_status.Ein Mensch klickt auf Genehmigen → der Server verifiziert, dass der Klick von einem auf der Whitelist stehenden Slack-Benutzer stammt, und stellt ein signiertes, einmalig verwendbares Token aus, das an den exakten Prüfsummenwert dieses Plans gebunden ist.
Der Agent ruft
tf_applymit dem Token auf. Der Server überprüft erneut Signatur, Ablauf, Einmalverwendungsstatus, die binäre Prüfsumme des Plans und prüft auf Cloud-seitige Drift – erst dann führt erterraform applyaus.
Siehe docs/architecture.md und docs/security-model.md für das vollständige Design und das Bedrohungsmodell.
Schnellstart (lokal, keine Slack-Einrichtung erforderlich)
git clone https://github.com/SORABH13/tf-approval-gate.git
cd tf-approval-gate
npm install
npm run build
npm run check-binaries # confirms terraform + checkov are on PATHErfordert Terraform und Checkov auf dem PATH. OPA/Conftest und Infracost sind optional (Funktionen werden übersprungen, wenn sie fehlen). Oder überspringen Sie die Installation komplett und verwenden Sie das Docker-Image unten, das alle drei bündelt.
Führen Sie es im Dev-Modus aus (APPROVAL_MODE=cli gibt den Diff im Terminal des Servers aus und wartet auf eine j/n-Eingabe, anstatt nach Slack zu posten – gut für einen ersten lokalen Test, aber eine schwächere Garantie als Slack, siehe docs/security-model.md):
APPROVAL_MODE=cli TF_APPROVAL_GATE_SECRET=$(openssl rand -hex 32) npm startFügen Sie es dann als MCP-Server in Claude Code (oder einen beliebigen MCP-Client) hinzu:
{
"mcpServers": {
"tf-approval-gate": {
"command": "node",
"args": ["/absolute/path/to/tf-approval-gate/dist/index.js"],
"env": {
"APPROVAL_MODE": "cli",
"TF_APPROVAL_GATE_SECRET": "<same secret as above>"
}
}
}
}Weisen Sie Ihren Agenten auf examples/local-demo (verwendet die null/random-Provider, keine Cloud-Zugangsdaten erforderlich) und lassen Sie ihn tf_workspace_init → tf_propose_change → tf_request_approval → tf_apply ausführen.
Docker / Devcontainer
docker build erzeugt ein Image mit vorinstalliertem Node, Terraform, Checkov und Conftest (OPA) – kein Host-Setup außer Docker selbst erforderlich.
docker build -t tf-approval-gate .
docker run --rm -it \
-e APPROVAL_MODE=cli \
-e TF_APPROVAL_GATE_SECRET=$(openssl rand -hex 32) \
-v "$(pwd)/examples/local-demo":/examples/local-demo:ro \
-v tf-approval-gate-data:/data \
tf-approval-gateFür den Slack-Modus fügen Sie -e SLACK_BOT_TOKEN=... -e SLACK_APP_TOKEN=... -e SLACK_APPROVAL_CHANNEL=... -e SLACK_APPROVER_USER_IDS=... hinzu und entfernen Sie APPROVAL_MODE=cli. Der Genehmigungsstatus wird im /data-Volume persistiert (SQLite-gestützt, siehe docs/architecture.md).
Eine .devcontainer/devcontainer.json ist ebenfalls für VS Code / GitHub Codespaces enthalten – öffnen Sie das Repository in einem Container und terraform/checkov/conftest sind sofort einsatzbereit.
Slack-Einrichtung (Produktionsmodus)
Erstellen Sie eine Slack-App aus examples/slack-app-manifest.yml.
Aktivieren Sie den Socket-Modus und generieren Sie ein Token auf App-Ebene (
xapp-...).Installieren Sie die App in Ihrem Workspace und kopieren Sie den Bot-Token (
xoxb-...).Setzen Sie
SLACK_BOT_TOKEN,SLACK_APP_TOKEN,SLACK_APPROVAL_CHANNELundSLACK_APPROVER_USER_IDS(durch Kommas getrennte Slack-Benutzer-IDs, die auf Genehmigen/Ablehnen klicken dürfen) – siehe .env.example.Führen Sie mit
APPROVAL_MODE=slackaus (der Standardwert).
Vollständige Anleitung: docs/slack-setup.md.
Tools
Tool | Zweck |
| Checkt/copiert ein Terraform-Projekt in ein Sandbox-Arbeitsverzeichnis. |
| Schreibt |
|
|
| Checkov (+ OPA/Conftest) gegen den Plan, zusammengeführt in einem Bericht. |
| Infracost monatliche Kostendifferenz (übersprungen, wenn nicht konfiguriert). |
| Zusammengesetzt: Plan + Richtlinie + Kosten in einem Aufruf. Zuerst aufrufen. |
| Postet zur menschlichen Genehmigung nach Slack (oder CLI). |
| Pollt nach dem signierten Genehmigungs-Token. |
| Das einzige Tool, das |
Vollständige Referenz: docs/tool-reference.md.
Status
v0.1 bis v0.4 sind implementiert und getestet: Happy Path (Checkov, Slack-Socket-Modus / CLI-Fallback), OPA/Conftest, Infracost-Kostenschätzung und ein SQLite-gestützter Genehmigungsspeicher mit atomarem Einmalverbrauch des Tokens. Ein Docker-Image und Devcontainer sind gebaut und verifiziert. Echte End-to-End-Läufe wurden sowohl gegen die lokale null/random-Demo als auch gegen ein Live-AWS-Konto (examples/aws-s3-demo) durchgeführt. Siehe docs/architecture.md für die vollständige Roadmap und was vor einem öffentlichen Launch-Post noch offen ist (ein Demo-GIF und externe Kalt-Tests – siehe CONTRIBUTING.md).
Lizenz
MIT – siehe LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceHuman-in-the-Loop authorization gateway for AI Agents. Securely pause MCP workflows and route high-risk actions to human approvers via Slack or Email.1151MIT
- AlicenseAqualityAmaintenanceEnforces team knowledge and workflow policies for AI coding agents by providing context, decisions, and gates before code changes are made.2151Apache 2.0
- AlicenseNot gradedqualityBmaintenanceAutonomous multi-agent pipeline that analyzes Terraform files for cost, governance, and compliance issues, providing real-time remediation and XAI console for human-in-the-loop approval.MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI coding agents to evaluate actions against team-defined policies, record decisions, and obtain human approvals for potentially risky operations.1651
Related MCP Connectors
Human-in-the-loop for AI coding agents — ask questions, get approvals via Slack.
See, price, and control every tool call your AI agents make: policy checks, cost, and audit tools.
Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SORABH13/tf-approval-gate'
If you have feedback or need assistance with the MCP directory API, please join our Discord server