Skip to main content

Lightweight guardrails for AI-assisted development teams

Project description

Tripwires

Tests Coverage Python PyPI License

Deliberately simple file change detection for rapid development cycles.

Tripwires tracks the effective content of specific files using fast non-cryptographic hashes for change detection, alerting you when they change unexpectedly. It simply asks: "Did this critical file change unexpectedly?"

Works with UTF-8 text files only - binary files are automatically excluded.

This is about governance, not security. Any developer with repository access can update both tracked files and the manifest. Tripwires simply adds a deliberate step to catch accidental or unexpected changes during development.

Ideal for catching unintended modifications during AI-assisted coding, refactoring sessions, or dependency updates.

Preserve your deliberate decisions. Catch the accidents.

When to use tripwires

✅ Useful when: Rapid iteration cycles, AI-assisted refactoring, protecting sensitive configuration files, team development with frequent changes, or catching accidental modifications during dependency updates.

⛔ Not useful when: Defending against malicious actors, working with frequently-changing binary assets, or in environments where the manifest itself isn't trusted or properly reviewed.

Installation

pip install tripwires

Simple Workflow

  1. 🎯 Have sensitive files you want to monitor? → Set tripwires to track them
  2. ⚙️ Set tripwirestripwires init and add your critical files
  3. ✏️ File gets changed → Someone (or something) modifies monitored code
  4. 🚨 Tripwire triggerstripwires check detects the change and alerts you
  5. Confirm changes are deliberate → Review, then tripwires update to reset monitoring
  6. 🔄 Fully CI-friendly → Integrates seamlessly with any CI/CD pipeline

Commands

Tripwires has just three commands - that's it.

tripwires init

Initialize a new tripwires manifest file.

tripwires init                                    # Create ./tripwires.yml
tripwires init --path /path/to/project            # Create tripwires.yml in specified directory
tripwires init -p /path/to/project                # Same as above (short form)
tripwires init --manifest custom.yml --force     # Custom name, overwrite if exists
tripwires init -m custom.yml -f                  # Same as above (short form)

Important: Always commit your manifest file (e.g., tripwires.yml) to source control. The manifest contains the expected hashes that your team and CI/CD pipeline will validate against.

tripwires check

Check all files in the manifest against their expected hashes.

tripwires check                              # Use ./tripwires.yml
tripwires check --manifest path/to/manifest.yml
tripwires check -m path/to/manifest.yml     # Same as above (short form)

Exit codes:

  • 0 - All files match their expected hashes
  • 1 - Hash mismatches detected
  • 2 - Configuration, decoding, or other errors

Output: By default, tripwires provides simple CLI-friendly messages with clear visual feedback. The output format can be customized via a simple output interface - see docs/OUTPUT.md for details.

Note for DevOps: Failed checks return non-zero exit codes, making tripwires compatible with any CI/CD tool that checks command exit status.

tripwires update

Recompute and update all file hashes in the manifest.

tripwires update                              # Use ./tripwires.yml
tripwires update --manifest path/to/manifest.yml
tripwires update -m path/to/manifest.yml     # Same as above (short form)

CI/CD Integration

Tripwires integrates seamlessly with any CI/CD pipeline. Failed checks return non-zero exit codes, making them compatible with any tool that checks command exit status.

See docs/CI_INTEGRATION.md for a GitHub Actions example and setup details.

Manifest Structure

Tripwires supports flexible manifest structures to organize your tracked files:

# Simple flat structure
paths:
  "src/auth.py": "abc123..."
  "config/settings.py": "def456..."

# Or organized groups
groups:
  core-logic:
    description: "Core business logic"
    paths:
      "src/auth.py": "abc123..."

See docs/MANIFEST.md for detailed examples and best practices.

Features

  • Cross-platform normalization - Consistent hashes across Linux/macOS/Windows
  • Binary file detection - Automatically excludes binary files
  • Pathlib integration - Robust path handling for all platforms
  • Emoji-friendly output - Clear, visual feedback
  • Extensible output - Easy to add new output formats

License

Apache 2.0 License - see LICENSE file for details.

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

tripwires-0.1.1.tar.gz (19.9 kB view details)

Uploaded Source

Built Distribution

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

tripwires-0.1.1-py3-none-any.whl (21.2 kB view details)

Uploaded Python 3

File details

Details for the file tripwires-0.1.1.tar.gz.

File metadata

  • Download URL: tripwires-0.1.1.tar.gz
  • Upload date:
  • Size: 19.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.10.19 Linux/6.11.0-1018-azure

File hashes

Hashes for tripwires-0.1.1.tar.gz
Algorithm Hash digest
SHA256 9120c0d4ac2b0f4e5aee713bf9805b65ff72b6d518300dc23581b37f8d6d0363
MD5 8f083393a0aae68874227d8f2061ece1
BLAKE2b-256 eeb04b948c3c8f639f7db8bc220bc80480e5e72ea81797d10d5e9c67c0c5cbe4

See more details on using hashes here.

File details

Details for the file tripwires-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: tripwires-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 21.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.10.19 Linux/6.11.0-1018-azure

File hashes

Hashes for tripwires-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 49df5cb3d5874d0b77cae531d087829670ad0cf2dc242fb478f5f95084fb8374
MD5 50884b38b2883cf222e5f8e91b9f7dd6
BLAKE2b-256 b88ccced41d9733f6d99200cd5c48c7e6f4df2b999d4f06a0805099915e3ae6f

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