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.5.tar.gz (66.5 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.5-py3-none-any.whl (65.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: polyhook-0.1.5.tar.gz
  • Upload date:
  • Size: 66.5 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.5.tar.gz
Algorithm Hash digest
SHA256 c3d9ce8bf2fa9cb9a722b1f5383523ae65ff2d0c4e53789070dcb40dade7993d
MD5 d51a24262206cbb00cce481f3cd0be08
BLAKE2b-256 4a7c550cb858b2b284cf0dd2af17804ac6442a3b979f64866f693c03f0262ef8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: polyhook-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 65.6 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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 fd611362a1638c55b00641c14b3d0949ef82ebaa34a8d1af210e180f9963944f
MD5 3237b1cf8a0ee839fe3a004ff986b684
BLAKE2b-256 562f1798cd4a8b24891bb81cfe3722a253d1a03997ef32c19adf1dbb6b00d84e

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