i-insist
Block agent tool calls with checks from your plugins or your own scripts.
Works with Codex and Claude Code. When a check blocks an action, the agent sees
the reason and stops. Say I insist when you want to override it.
Install
Requires uv, Python 3.12 or newer, and Linux or macOS.
uv tool install 'git+https://github.com/crypdick/i-insist@main'
i-insist install codex
i-insist install claude
Install only the integrations you use. Restart the agent and check hook trust
with /hooks.
Rules
Plugins supply their own checks. Rules live in ~/.i-insist/*.toml for global
use or .i-insist/*.toml within a project. Global and applicable local rules
run together.
Installation includes a rule requiring human approval to change .i-insist
files. Other checks come from your plugins or scripts.
To write your own, start with the runnable example and rule and checker reference. Plugin installers replace their generated registrations, so don't edit those files to customize a plugin.
Human overrides
Include I insist anywhere in your message, in any capitalization:
I insist, update both protected files.
Approval lasts for the current response and resets with your next message or when you start or resume a session. Quoted text and code blocks count too.
Rules marked overridable = false still run. Invalid configuration still blocks
approved calls. Approval doesn't override other plugins or the agent's own
permissions.
These are cooperative guards, not a sandbox. They depend on the agent calling hooks, and checkers run with your account's privileges.
Configuration protection recognizes literal paths in Python -c commands and
standalone quoted Python heredocs. Embedded replacement source text mentioning
.i-insist is not itself a configuration path. Literal configuration paths
(including f-string fragments) still require approval. Malformed Python,
recognized dynamic execution calls, and other shell forms retain conservative
checks. This is not arbitrary Python data-flow analysis or a shell sandbox.
Separate shell commands are checked independently: listing .i-insist followed
by an unrelated test or file operation does not require approval. Quoted and
escaped separators stay within their command, as do redirection operators.
Directory changes, variable assignments, shell control flow, substitutions,
and other heredocs retain the conservative whole-call check.
Update or uninstall
Update the runner, then repeat the install command for each integration you use if the update changes hook registrations:
uv tool upgrade i-insist
To uninstall, remove each integration you installed before removing the runner:
i-insist uninstall codex
i-insist uninstall claude
uv tool uninstall i-insist
Uninstall leaves provider rules and approval caches in place.
Reference
- Integration reference: checker protocol, rule discovery, approval details, and upgrades from 0.3.x
- Development and releases: contributing, checks, and publishing
Metadata
Release files for i-insist 0.4.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| i_insist-0.4.5.tar.gz | 101.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| i_insist-0.4.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 118.4 kB
Release files / i_insist-0.4.5.tar.gz
| Download URL | i_insist-0.4.5.tar.gz |
|---|---|
| Size | 101.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
26670c753657733265e008a673b0d3a76d6637d5d18ca8e03dcdb2899585482d
|
|
BLAKE2b-256 checksum How to use checksums |
fb6668a5fc675d14602f7cf6db98a45ed9394f34c05ab524958b9b51b00fddec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.
Transparency logRelease files / i_insist-0.4.5-py3-none-any.whl
| Download URL | i_insist-0.4.5-py3-none-any.whl |
|---|---|
| Size | 16.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
315855a077c8163bda712f3a8948dc9e3017ed7027c70467083619b7672b160b
|
|
BLAKE2b-256 checksum How to use checksums |
3ae2a575387768d7bb7b07e41fcf1b0d8ffcf2dcc22c5afc4763edacfe7144c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.
Transparency log