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.10.tar.gz (67.2 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.10-py3-none-any.whl (66.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: polyhook-0.1.10.tar.gz
  • Upload date:
  • Size: 67.2 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.10.tar.gz
Algorithm Hash digest
SHA256 3c6774143d2cd96aed5835a6f86aa7774cc2e084aede5b8c291a47fad59c1064
MD5 db61c5fe55249ddc0356ba3a4a97daeb
BLAKE2b-256 fac6d0933da9a21ac99d241583ee57d042e60766d9268484dbb70ba6c833e4f3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: polyhook-0.1.10-py3-none-any.whl
  • Upload date:
  • Size: 66.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.10-py3-none-any.whl
Algorithm Hash digest
SHA256 301b6dcd71170d1c447c8c5da2883bf4f9447173ee00f37bed2697fd890029b7
MD5 d030c36644693d7f747ba62e062d19b6
BLAKE2b-256 e1b6f8d20dcb89f410010ff0e719d8fedd12095c3a04264e68390da3144934c6

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