惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
B
Blog
V
V2EX
T
Tailwind CSS Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
博客园 - 聂微东
博客园 - 叶小钗
博客园 - 三生石上(FineUI控件)
The Cloudflare Blog
J
Java Code Geeks
H
Help Net Security
雷峰网
雷峰网
Apple Machine Learning Research
Apple Machine Learning Research
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Engineering at Meta
Engineering at Meta
F
Fortinet All Blogs
Martin Fowler
Martin Fowler
D
Docker
L
LangChain Blog
人人都是产品经理
人人都是产品经理
爱范儿
爱范儿
WordPress大学
WordPress大学
V
Visual Studio Blog

Show HN

Show HN: AI agents for UK GDAD PCF roles and their skills The Two Pillars: Mixer Mode and Meta-Software in the Reorganization of Software Work After AI GitHub - JaiCode08/teleport-env What 1,000+ Harness Experiments Taught Me About Self-Improving Agents Show HN: Liiists, a Markdown-first, iOS and CLI list app SwiperTab – Get this Extension for 🦊 Firefox (en-US) GitHub - kouhxp/fftext: Summarize, explain, fact-check, or translate any text, URL, or file. No GPU. No cloud. One command GitHub - sweetpad-dev/sweetpad: Develop Swift/iOS projects using VSCode GitHub - dogmaticdev/IRON: IRON a.k.a. Intermediate Representation Object Notation is a Interpreter/Database that is used to create Programming Languages. GitHub - sjhalani7/vaen: Package your AI coding harness into a portable .agent file, and share it across repos, teams, & the community without ever having to copy-paste instructions, skills, MCP config, or secrets. Show HN: Gandalf the Grader Show HN: Citadeld – replay any CI failure locally from a single file GitHub - tdortman/cuSBF: High-Performance GPU Super Bloom Filter coral-ai/claude-code-token-xray at main · Coral-Bricks-AI/coral-ai GitHub - ulyssestenn/funes: Funes is a Git-based framework for LLM-managed knowledge work: an AI Librarian ingests raw sources, builds an interlinked Markdown knowledge base, and uses it to produce cited reports, analyses, and other outputs. GitHub - ThatXliner/gah: Git Add Hunk, built for agents to use GitHub - harmont-dev/harmont-cli: Command-line client for the Harmont CI platform GitHub - brooksmcmillin/mcp-authflow: OAuth 2.0 Authorization Server framework for MCP servers GitHub - javaid-codes/audit-supply-chain-agents GitHub - amorey/gochan: A small library of common channel architectures for Go, inspired by Rust GitHub - arifozgun/OpenGem: Free, Open-Source AI API Gateway with Gemini, OpenAI & Anthropic Compatibility in 1 file GitHub - Pranesh950/BioPetals: 🌸 Run BIOxAI models at home, BitTorrent-style. Fine-tuning and inference up to 10x faster than offloading GitHub - cnguyen14/bounty-doctor: Diagnose a GitHub bounty issue before you waste hours: detects honeypot scam repos, AI-bot attempt swarms, and stale contests. Show HN: CoreMCP – MCP Server for On-Prem DBs Show HN: KittyHTML – Render HTML/CSS as an inline image in your terminal GitHub - bingud/filemat: Web-based file manager Show HN: TruthLens – Free multi-signal deepfake image detector GitHub - apexlocal-jz/claude-usage-tray: Windows system-tray app showing your Claude Code rate-limit usage at a glance. Zero deps, ~300 lines of PowerShell. Cross-IDE (works regardless of VS Code, Cursor, plain terminal). Release v0.1.2.1 · kouhxp/yapsnap GitHub - noopolis/moltnet: Self-hostable chat network for AI agents. Pre-built bridges for Claude Code, Codex, and the Claws. Rooms, DMs, history. No Slack bots, no Matrix, no glue code.
GitHub - ductrl/CommitGate: An AI-powered Git pre-commit ...
ductrl · 2026-06-21 · via Show HN

An AI-powered security gate for Git. Every time you run git commit, CommitGate scans the staged diff for potential vulnerabilities and blocks the commit before secrets or risky code ever reach your history.

It runs two scanners over your staged changes and merges their findings:

Layer Tool Catches
Deterministic Gitleaks Known secret shapes — API keys, tokens, passwords matching standard patterns
Semantic AI reviewer (OpenAI-compatible — DeepSeek, OpenAI, Gemini, or Groq) What regex misses — internal URLs, non-standard credentials, eval/os.system, data-leaking logic

Findings from both layers are merged, deduplicated, and fed into a decision engine that rules allow / warn / block. A Rich terminal report explains why.


Demo

CommitGate Demo

CommitGate blocking a vulnerable commit before it reaches Git history.


Table of Contents

  • Setup
  • Usage
  • How it works
  • Splunk Setup
  • Module map
  • Data Privacy
  • License

Setup

1. Install prerequisites

Install these on your machine before installing CommitGate:

  • Python ≥ 3.10

  • Git

  • Gitleaks — an external binary that must be installed separately (it is not pulled in by pip):

    • Windows: winget install gitleaks
    • macOS: brew install gitleaks
    • Linux: download the release binary and place it on your PATH

    Confirm it's on your PATH before continuing:

  • AI API key — required for the AI reviewer (pick one provider; you'll add the key to your .env in step 3):

2. Install CommitGate

pip install git+https://github.com/ductrl/CommitGate.git

3. Configure environment variables

Create a .env file in the root of your project (not CommitGate's repo):

# Required — AI reviewer (one key for whichever provider you set in commitgate.yaml)
AI_KEY=your-api-key-here
# Free option: get a Groq key at https://console.groq.com, then set provider: groq in commitgate.yaml

# Optional — AI review timeout in seconds (default: 20)
# COMMITGATE_AI_TIMEOUT=20

# Optional — Splunk audit logging (see Splunk Setup below)
# SPLUNK_HEC_TOKEN=your-hec-token-here
# SPLUNK_HEC_URL=https://prd-p-yourinstance.splunkcloud.com:8088/services/collector/event
# SPLUNK_VERIFY_SSL=false                   # required for Splunk Cloud free trial

.env should be gitignored — your keys should never enter source or git history.

4. Initialize CommitGate

Run this inside the repo you want to protect:

This does two things at once:

  • Creates a commitgate.yaml config file in the repo root
  • Writes .git/hooks/pre-commit so commitgate scan fires automatically on every commit

The generated commitgate.yaml looks like this — edit it to match your needs:

ai:
  enabled: true          # set to false to run gitleaks only (no API key needed)
  # Options: openai, deepseek, gemini, groq
  # Tip: groq offers a free API key — get one at https://console.groq.com
  provider: deepseek
  timeout: 20            # seconds before AI review is abandoned (fail closed → warn)
policy:
  block_severity: high   # findings at this severity or above stop the commit, available options: low / medium / high / critical
reporting:
  show_suggestions: true # include AI fix suggestions in the terminal report

Commit commitgate.yaml so your whole team shares the same gate policy — it contains no secrets.


Usage

commitgate init          # create commitgate.yaml + install pre-commit hook
commitgate scan          # scan staged files (runs automatically via hook)
commitgate install-hook  # install pre-commit hook only (no config file)
commitgate version       # print version
SKIP=all git commit ...  # bypass CommitGate for a single commit

Once the hook is installed, just commit normally. CommitGate intercepts the commit, scans the diff, and either lets it through or blocks it with a report.

Decision outcomes

Outcome Meaning Exit code
allow No findings, or all below warn threshold 0 — commit proceeds
warn Medium-severity findings 0 — commit proceeds, warnings printed
block High or critical findings 1 — commit stopped

Manual scan (without committing)

git add <file>
commitgate scan
git restore --staged <file>

How it works

git commit
  └─ .git/hooks/pre-commit  →  commitgate scan
        ├─ gitleaks_runner    scan staged diff for known secret patterns
        ├─ ai_reviewer        LLM semantic review for issues regex can't catch
        ├─ decision_engine    merge findings → allow / warn / block
        ├─ report_generator   Rich terminal output
        ├─ splunk_logger      audit event to Splunk HEC (optional)
        └─ exit code          block → non-zero (stops commit) · allow/warn → 0

Splunk Setup (optional)

CommitGate can send an audit event to Splunk after every scan, giving you a searchable history of every commit decision.

1. Create a Splunk account

Sign up at splunk.com. Start a Splunk Cloud free trial from your account dashboard.

2. Enable HTTP Event Collector (HEC)

In your Splunk UI:

  1. SettingsData InputsHTTP Event Collector
  2. Click Global Settings → set All Tokens to EnabledSave

3. Create a HEC token

  1. Still on the HTTP Event Collector page → New Token
  2. Name: commitgate-audit
  3. Click NextSource type: type commitgate:audit and select New
  4. Index: mainReviewSubmit
  5. Copy the token shown on the confirmation screen

4. Add to your .env

SPLUNK_HEC_TOKEN=your-token-here
SPLUNK_HEC_URL=https://prd-p-yourinstance.splunkcloud.com:8088/services/collector/event
SPLUNK_VERIFY_SSL=false

Why SPLUNK_VERIFY_SSL=false? Splunk Cloud free trial issues certificates missing the Authority Key Identifier extension required by Python 3.10+, making SSL verification impossible on the free plan. Paid Splunk accounts use properly signed certificates and do not need this setting.

5. Verify the connection

Stage any file and run a manual scan:

git add <any-staged-file>
commitgate scan
git restore --staged <any-staged-file>

If the audit event reaches Splunk you'll see no yellow "Splunk audit log failed" warning in the output.

6. View events in Splunk

Search & Reporting → run:

sourcetype="commitgate:audit"

Each commitgate scan appears as one event with action, reason, findings_count, and the full findings list.

Splunk dashboard

Build a CommitGate Security Gate dashboard with these searches:

Panel Type Search
Decisions over time Line chart sourcetype="commitgate:audit" action!="allow" | timechart count by action
Blocks today Single value sourcetype="commitgate:audit" action=block | stats count as Blocked
Top triggered categories Bar chart sourcetype="commitgate:audit" | stats count by findings{}.category | sort -count
Findings by severity Pie chart sourcetype="commitgate:audit" | stats count by findings{}.severity
Recent blocked commits Table sourcetype="commitgate:audit" | table _time reason findings_count | sort -_time

Module map

Module Role
cli.py Typer commands: scan, install-hook, init, version
git_utils.py Staged files/diff, is-git-repo, hook install
gitleaks_runner.py Run gitleaks binary, parse findings into dicts
ai_reviewer.py LLM semantic review (OpenAI-compatible — provider set in commitgate.yaml), returns (findings, ok)
decision_engine.py Merge findings → allow / warn / block (reads commitgate.yaml thresholds)
report_generator.py Format findings for Rich terminal output
splunk_logger.py POST audit event to Splunk HEC after every scan
config.py Generate and load commitgate.yaml, merge with built-in defaults

See docs/architecture.md for the full architecture and CONTRIBUTING.md for the branch/PR workflow.


Data Privacy

When ai.enabled: true, CommitGate sends your staged code diffs to an external AI provider (whichever you configure in commitgate.yaml). Do not use the AI reviewer on confidential or proprietary code without your organization's authorization. Set ai.enabled: false to run gitleaks only — no data leaves your machine.

Supported providers: Groq, DeepSeek, OpenAI, Gemini. Local LLM support (Ollama) and self-hosted Splunk are on the roadmap so CommitGate can operate fully air-gapped.


License

MIT © 2026 Mike Ly

CommitGate is free to use, modify, and distribute under the terms of the MIT License.