Skip to main content

A tool to prevent you from pushing sensitive files to your repository.

Project description

PyGitGuard Logo

🛡️ PyGitGuard

PyGitGuard is a Git security scanner designed to prevent accidental commits of sensitive data by scanning for:

  • 🧪 Exposed credentials
  • 📁 Potentially sensitive files
  • 📄 Missing best practice files

📦 Version History

1.0.4

  • Standarize project to upload in pipy

1.0.3

  • Fix: "Do not block commits in cases of recommendations."
  • Adding context message after run
  • Docs: "Documenting some files to maintain consistency."

1.0.2

  • Refactor: Standarize a bit lines with black linter.

1.0.1

  • Fix: pip install support.
  • Fix: pre-commit support.
  • Fix: Improvements to config in .pre-commit-config.yaml.
  • Fix: Add pre-commit to requirements.txt.
  • Fix: Creating config files if they do not exist.
  • Fix: Remove interactive mode with input (not supported with pre-commit).

1.0.0 – Initial release with core features

✅ Features

  • 🚫 Detect sensitive content via regex (e.g., passwords, tokens, API keys)
  • 🔍 Scan for sensitive filenames like .env, .pem, id_rsa
  • 📏 Enforce maximum file size policies
  • 📚 Recommend best practice files (e.g., README.md, .gitignore, LICENSE)
  • 🔄 Auto-generate configuration files
  • 🪝 Pre-commit hook support

🚀 Quick Start Guide

1. Install PyGitGuard

pip install git+https://github.com/digo5ds/pygitguard.git

2. Install and Configure pre-commit

If you haven't already:

pip install pre-commit
pre-commit install

To manually run a scan:

pygitguard

To scan a specific path:

pygitguard --path <your_repository>

With pre-commit configured, the scan runs automatically before each commit.

Scan Report Example

To bypass a scan for a commit:

git commit -m "your message" --no-verify

⚙️ Configuration

On the first run, .pygitguard.yaml and .pre-commit-config.yaml is created (if not exists). This file allows customization of scan behavior.

📌 Using with .pre-commit-config.yaml

If you're already using pre-commit, add this to your config:

repos:
  - repo: https://github.com/digo5ds/pygitguard
    rev: 1.0.1  # Replace with the latest release
    hooks:
      - id: pygitguard-scan
        name: PyGitGuard Scan
        entry: pygitguard
        language: system
        types: [python]
        stages: [pre-commit]

Example .pygitguard.yaml

SENSITIVE_PATTERNS:
  - .*\.env.*$
  - .*\.pem.*$
  - .*\.key.*$
  - .*\.crt.*$
  - .*\.sqlite.*$
  - .*\.db.*$
  - .*secret.*$
  - .*credential.*$
  - .*id_rsa.*$
  - .*password.*$
  - .*token.*$
  - .*ACCESS_KEY.*$

SENSITIVE_CONTENT:
  - \b\w*password\w*\s*=\s*['"`].+['"`]
  - \b\w*token\w*\s*=\s*['"`].+['"`]
  - \b\w*api[_-]?key\w*\s*=\s*['"`].+['"`]
  - \b\w*user(name)?\w*\s*=\s*['"`].+['"`]
  - \b\w*ACCESS_KEY\w*\s*=\s*['"`].+['"`]

BEST_PRACTICES_FILES:
  - .gitignore
  - README.md
  - LICENSE
  - requirements.txt
  - pyproject.toml
  - Dockerfile: .dockerignore
  - docker-compose.yml: .dockerignore
  - __version__.py  # Recommended

MAX_FILE_SIZE_MB: 1

💡 Tips

  • Add __version__.py to BEST_PRACTICES_FILES to track versioning.
  • Customize MAX_FILE_SIZE_MB for your project's sensitivity.

🔧 Local Hook Example

To use as a local hook:

- repo: local
  hooks:
    - id: pygitguard
      name: pygitguard
      entry: pygitguard_cli
      language: system
      types: [python]

📄 License

MIT License


🤝 Contributing

Pull requests and issue reports are welcome!

📬 Contact

LinkedIn

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pygitguard-1.0.4.tar.gz (11.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pygitguard-1.0.4-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file pygitguard-1.0.4.tar.gz.

File metadata

  • Download URL: pygitguard-1.0.4.tar.gz
  • Upload date:
  • Size: 11.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for pygitguard-1.0.4.tar.gz
Algorithm Hash digest
SHA256 bc0dadf09a3c24851c8711b3a5b5dbe3878dbecbd467acdff109d48ababbbd74
MD5 c4c5c915b866ec8ebf503af40dceed2e
BLAKE2b-256 348f644d29fcac723347f5cdcbec84c0f776f95cf583f7f6db2b4d327180faaa

See more details on using hashes here.

File details

Details for the file pygitguard-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: pygitguard-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for pygitguard-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 37f8925c110d355d121a574ffe9adea6c858a54123aaa159c6feba14473ef99f
MD5 83f6795406866661e8380550d76fb2ea
BLAKE2b-256 d5d48e77875929a8140a969a64db0f605b073c1cf27b79d94fd12973bcf99e35

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page