Migration from the original 0.3 behaviorΒΆ
This hardening introduces deliberate compatibility changes. Existing code should review its trust assumptions before enabling previously permissive settings.
IntentNamespacedefaults tostrict=True. Unsupported syntax raisesIntentParseError. Usestrict=Falseonly for trusted-code auditing.Callable-object rules no longer grant access to matching module/qualified-name metadata. Register the exact function, or explicitly select a string rule when broad metadata matching is intended.
Callable instances are opaque and cannot be used as rules or decorated roots.
Names cannot authorize unresolved or dynamic targets unless the explicitly unsafe
allow_unknown=Trueoption is selected.Default deny rules block aliases of dynamic builtin primitives too.
Local recursion is detected rather than expanding until RecursionError.
Async wrappers preserve coroutine kind and check at execution time. Generator and async-generator roots raise
IntentConfigurationError.Analysis has node/depth/source budgets. Warning mode does not suppress parse errors or budget exhaustion.
Development tools are no longer installed as runtime dependencies. Contributors should use
uv sync --all-groups.
For AI tools and privileged operations, prefer IntentDispatcher with trusted
registry/grants and per-capability argument validation. It does not sandbox code;
hostile plugins still require external OS isolation and an authenticated broker.