FAQ
Common questions
Short answers to the questions that come up most often. For details, follow the links.
Basics
- What is AXIS?
- A deterministic PostgreSQL write-path control layer: it classifies SQL, evaluates versioned policy, enforces ALLOW / BLOCK / REQUIRE_APPROVAL, and records durable, hash-linked evidence.
- Is AXIS production-ready?
- No. It reached v0.6 Pilot Readiness — controlled demos, local review and non-production pilot. It is not compliance-certified enterprise software.
- Does AXIS use AI to decide?
- No. Decisions come from a deterministic policy engine. "AXIS does not guess with AI."
- Which port does AXIS listen on?
- HTTP API on
6543(LISTEN_ADDR); the lab wire listener uses6544and is disabled by default. PostgreSQL is5432; the Control Plane is3000.
Protection model
- Does AXIS protect all database traffic?
- Only traffic that passes through AXIS. Direct database access with valid credentials bypasses AXIS and must be closed by deployment.
- Are reads protected too?
- Reads default to ALLOW and, in the pilot integration, safe reads go directly to PostgreSQL. The read/write split is intentional; reads are not the protected surface.
- What happens to dangerous writes?
- They are blocked (403) or require approval (202) before any execution. Evidence is recorded either way.
- Can operators bypass AXIS silently?
- No.
emergency_bypassis explicit, configured and logged with a reason code — "AXIS does not support silent emergency bypass."
Approvals
- Does approving a request execute it?
- No. Approval is consent; the client must retry the request with the
approval_idbefore AXIS evaluates and executes. - Can an approval be used twice?
- Resolution is immutable and each retry is a separate audited event; expired or rejected approvals never execute.
- How long is an approval valid?
- Default TTL 300 seconds (
AXIS_APPROVAL_DEFAULT_TTL_SECONDS); expired approvals returnapproval_expired(410).
Integration
- Which drivers are verified?
- psycopg3, asyncpg, Prisma and pgJDBC single-statement through AXIS — 37 tests each (2026-07-05). Batch (JDBC) and COPY are fail-closed.
- Can I point psql at AXIS?
- In the lab, the pgwire listener intercepts Simple Query; it is experimental, disabled by default, and not for production. Extended Query is planned.
- Does SQLAlchemy work with AXIS?
AxisRoutingSessionis a v1 routing adapter for the HTTP path; it is not a universal ORM solution.- What happens to prepared statements?
- HTTP path: AXIS-side session store with fail-closed
EXECUTE. Wire path: Extended Query planned; prepared statements fail closed today.
Evidence
- How is audit tamper detected?
- Every event carries
event_hashandprevious_hash; corruption or tampering breaks the chain and is surfaced by/evidence/verify. - Is the audit trail an external ledger?
- No. The WAL + hash chain is a local integrity guarantee; external ledger anchoring is planned.
- What is an Evidence Bundle?
- A range export (
bundle_type: axis.evidence_bundle.v1) with first/last hashes and optional Ed25519 signing, for out-of-band verification. - Can I delete the JSONL audit file?
- Yes — it is a human-readable projection; the WAL is canonical. Verification is unaffected.
Operations
- What happens if the audit WAL cannot be written?
- Protected writes do not execute (
audit_wal_failure); evidence comes first. - Can I auto-retry a timed-out request?
- No. After
execution_state: unknownthe write may have applied; verify first, then re-submit explicitly. - How do I update policy safely?
- Validate → diff → dry-run → create candidate → activate with
expected_hash; rollback is available against archived versions. - Why is
operator_auth_enabled: false? AXIS_OPERATOR_TOKENis unset. Set a real token; an unset token keeps local dev unblocked but must never ship.
Roadmap
- What is next after v0.6?
- The hardening path continues (v0.7+): JWT context shipped in v0.9; planned items include mTLS completion, Extended Query, RBAC/SSO, KMS and external ledger anchoring. See the Changelog.
- Can AXIS protect an existing application without changes?
- Only where traffic can be routed through AXIS. The HTTP path requires integration (or the SQLAlchemy adapter); the wire path is not production-ready.
Related: Glossary · Getting Started · Pilot