Skip to main content

polyhook Python SDK — write AI coding agent hooks once, run them everywhere

Project description

polyhook — Python SDK

Write AI coding agent hooks once. Run them everywhere.

polyhook detects which AI coding tool invoked your hook binary, deserializes the event into a normalized struct, and serializes your response back in the format that tool expects. Your hook runs unchanged whether Claude Code, Cursor, Windsurf, Cline, or Amp invoked it.

Install

pip install polyhook

Quick Start

import sys
import re
import polyhook

event = polyhook.read()

if (
    event.tool == "bash"
    and re.search(r"rm\s+-rf\s+/", event.input.get("command", "") if event.input else "")
):
    polyhook.respond(polyhook.block("Refusing to delete from root"))
else:
    polyhook.respond(polyhook.approve())

More examples: examples/

Supported Tools

Tool Status
Claude Code ✅ Supported
Cursor ✅ Supported
Windsurf ✅ Supported
Cline ✅ Supported
Amp ✅ Supported
Continue 🚧 In progress
Aider 🚧 In progress
Copilot 📋 Planned

Documentation

Full docs and API reference: https://github.com/tupe12334/polyhook

License

MIT

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

polyhook-0.1.3.tar.gz (66.3 kB view details)

Uploaded Source

Built Distribution

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

polyhook-0.1.3-py3-none-any.whl (65.4 kB view details)

Uploaded Python 3

File details

Details for the file polyhook-0.1.3.tar.gz.

File metadata

  • Download URL: polyhook-0.1.3.tar.gz
  • Upload date:
  • Size: 66.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for polyhook-0.1.3.tar.gz
Algorithm Hash digest
SHA256 23c2ee5a5c599dfbce90ee5afe6195208c7fc6ab9e062af939465a49bec6505a
MD5 4cac4cc42d836a25e906b8b475f387e6
BLAKE2b-256 2e847345e90680fb9335fc2ca36ca89ad66884263126a285f6056cf0653d922a

See more details on using hashes here.

File details

Details for the file polyhook-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: polyhook-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 65.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for polyhook-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 bb6bea47ce575afd718eca8d2efb5dddc326568438e8986c6dc2b08abaf8c544
MD5 6b04b75a2239615617e4fe1046f7d5a4
BLAKE2b-256 f52f5cd7b4eb5007b6973e831d3f6b33dcba976710731079f32e7d5dffc262b9

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