Skip to main content

Lightweight guardrails for AI-assisted development teams

Project description

Tripwires

Tests 100% Test Coverage Static Badge

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.0.tar.gz (19.8 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.0-py3-none-any.whl (21.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: tripwires-0.1.0.tar.gz
  • Upload date:
  • Size: 19.8 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.0.tar.gz
Algorithm Hash digest
SHA256 7daaa902aae7a0cb7c73abcc30a5eb9edeb21581e1fdf2545e8d476791ec80fd
MD5 27059da90a6108b30aaee8e846cb836b
BLAKE2b-256 4a4691a156900c48255290166b570b7d8444dab19a931423849c81c5112bd76c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tripwires-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 21.1 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f701f67ddc9904c1b3dc4e40285d7bc9a2b5a6308962789cfcd3898130df78cf
MD5 baa784cf6f8b5bc2c0f50f6c4a171715
BLAKE2b-256 7de0723637773e219ae3963345e66edefd7fffe88eb79dd803aabf90b79c109d

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