Skip to content

Security and trust boundaries

Axiomize treats all externally supplied Model IR, REST/MCP payloads, provider responses, file paths, and document content as untrusted unless a caller explicitly opts into a stronger trust boundary.

Mathematical expressions

Model equations and constraints are parsed through a restricted arithmetic grammar with an explicit symbol namespace and hard complexity limits before SymPy is invoked. Python attribute access, imports, subscripting, lambdas, comprehensions, and arbitrary function calls are rejected.

Compute limits

Approval flags authorize expensive scientific work; they do not disable resource-safety ceilings. Array sizes, samples, model dimensions, graph sizes, expression complexity, iteration counts, and generated result sizes have hard upper bounds.

Arbitrary code and theorem elaboration

Local Python execution and Lean theorem elaboration are not kernel-level sandboxes. They require explicit trust, use isolated temporary working directories, reduce inherited environment data, avoid a shell, and enforce time/resource limits where supported. For hostile code, use an external container or OS sandbox.

REST and MCP

REST binds to loopback by default. Remote binding requires explicit opt-in plus a bearer token. Request/message sizes are bounded, file-backed run access is confined to a configured run root, and server responses avoid exposing internal tracebacks.

Provider endpoints

OpenAI-compatible provider URLs must use approved HTTP(S) schemes, requests and responses are size/time bounded, and authenticated requests do not follow redirects that could forward an Authorization header to another origin.

Reproducible run state

Run records are written atomically and include integrity metadata. Loading a run verifies the recorded content hash before returning the result.