AI Trust Pack
When your customers review your product, their security questionnaires now ask about AI: which providers see their data, whether those providers train on it, how long anything is kept, and what stops personal data from leaving. The Trust Pack answers from what your gateway actually recorded and enforced, not from a policy document: every report is built from your request logs and settings when you open it.
| Part | What it gives you | Plan |
|---|---|---|
| Sub-processors | Every provider, tool server and platform service your AI data reached, or can reach, with each one’s terms. | Every plan |
| Data handling | What is kept, for how long and where, as plain sentences you can paste into a questionnaire. | Every plan |
| Guardrail coverage | How many requests were checked, what was blocked or redacted, which personal data types are covered. | Every plan |
| Approved provider policy | A list of providers; a request to any other is refused before it is sent. | Pro and Enterprise |
| Change alerts | An email and a signed webhook when a new sub-processor, region or model appears. | Pro and Enterprise |
| Evidence bundles | A signed zip of the reports, audit trails and request metadata for a period, for an auditor. | Pro and Enterprise |
| Public trust page | A page at /trust/your-company you can link from your own trust center. | Pro and Enterprise |
| AI questionnaire | 39 common AI review questions, most answered from your records, exported as CSV or XLSX. | Pro and Enterprise |
Everything is on the AI Trust Pack page of the dashboard. The three reports can be read by anyone who can read the workspace’s logs, for one workspace or the whole organization. The policy, alerts, evidence, trust page and questionnaire belong to the organization and are managed by its owners and admins.
Each report covers a period: the last 90 days unless you pick another, at most 366 days. In the dashboard a period starts at midnight UTC, so the same choice gives the same report all day.
- Sub-processors. Model providers (one row per company, however many of its APIs you use), tool servers on the MCP Gateway, and the services VectorAxis itself uses when your data reaches them (hosting, the edge proxy, the semantic cache’s embeddings, AI guardrail checks). Each is used (requests in the period) or only configured (a key or connector could send to it). Provider terms (training on API data, retention, data residency, DPA and terms links) come from each provider’s own published pages, reviewed by VectorAxis; a fact a provider does not clearly state is shown as not stated, never guessed. Cache hits do not count as a provider seeing data.
- Data handling. Your organization’s log retention, whether request and response bodies are stored, how long cached answers live, the regions that hold your logs, and what you asked providers to keep (uploaded files not yet deleted, batches, stored responses). The sentences state the values in force, nothing about where they come from.
- Guardrail coverage. The share of requests a guardrail ran on (streams included), BLOCK, REDACT and MONITOR counts, tool results scanned, MCP tool calls checked, each guardrail’s checks and where it is attached. A personal data type counts as covered only when an enabled check redacts or blocks it.
Choose the providers your organization’s AI data may go to and enforce the list. From then on a request that would send data to any other provider is refused with a 403 naming the provider, before anything is sent. It applies to every path that sends data: chat (direct, fallbacks, routing-config targets, streams), the Claude SDK, prompts, embeddings, file uploads and batches, and MCP sampling.
- A refusal is an ordinary error, so a fallback chain moves on to its next provider, and a FALLBACK routing config skips the refused target.
- Reading, cancelling and deleting are never refused, so you can still remove data from a provider you no longer approve.
- Changes take effect within 30 seconds. Saving a list without enforcing it keeps it as a draft that does nothing.
- VectorAxis’s own services (hosting, cache embeddings, guardrail checks) are listed on the sub-processor report and are not part of the list.
- If your plan lapses, an enforced policy stays enforced until you stop it; you can always stop it.
Once a day (04:15 UTC) the gateway compares the organization’s sub-processors with the day before. The first check is a baseline. After that it records:
| Change | When | |
|---|---|---|
| SUBPROCESSOR_ADDED | A new provider, tool server or platform service appears. | Yes |
| SUBPROCESSOR_FIRST_USED | One that was only configured receives data for the first time. | Yes |
| SUBPROCESSOR_REMOVED | One is no longer used in the period and no longer configured. | Yes |
| REGION_ADDED | A provider is used in a new region. | Yes |
| MODEL_ADDED | A new model of a provider already in use. | No (webhook only) |
Alerts go by email to the organization’s owners and admins when email is on, and to your webhook when one is set. Every change is also listed on the Changes and policy tab. Deliveries are best effort and not retried.
The webhook receives a POST with {type, organization, sent_at, events}, where type is trust.subprocessor_changes (or trust.test from the test button). It is signed with your webhook secret (whsec_..., shown once when created or rotated): X-VectorAxis-Timestamp is the Unix time and X-VectorAxis-Signature is sha256= followed by the hex HMAC-SHA256 of <timestamp>.<raw body>, keyed with the whole secret.
import hashlib, hmac, time
def verify(secret: str, timestamp: str, body: bytes, signature: str) -> bool:
if abs(time.time() - int(timestamp)) > 300: # reject old deliveries
return False
expected = hmac.new(secret.encode(), timestamp.encode() + b"." + body, hashlib.sha256).hexdigest()
return hmac.compare_digest("sha256=" + expected, signature)An evidence bundle is a zip an auditor can check without trusting you or us: for a period you choose (90 days by default, at most 366) it holds the organization-wide reports, the change list, every audit trail (virtual keys, routing configs, guardrails, prompts, the MCP Gateway, the Trust Pack itself) and requests.csv, the metadata of each request (never its content). It builds in the background; one bundle can be building at a time, and a finished one can be downloaded for 30 days.
| File | Contents |
|---|---|
| report.html | The whole bundle as one readable page. |
| subprocessors.json / .csv | The sub-processor report. |
| data-handling.json, guardrail-coverage.json | The other two reports. |
| subprocessor-changes.json / .csv | The changes found in the period. |
| audit/ | One CSV per audit trail. |
| requests.csv | Request metadata, up to 50,000 rows (the manifest says when it was cut short), from the region that built the bundle. |
| manifest.json, manifest.sig | Every file’s SHA-256 and size, and the Ed25519 signature of the manifest. |
| SHA256SUMS, public-key.pem, README.txt | The hashes, the key that verifies the signature, and these steps. |
To verify a bundle with OpenSSL 3: first check that the key is VectorAxis’s, by comparing public-key.pem with GET /v1/public/trust/evidence-signing-key (it returns the key id and PEM; no sign-in needed). Then, in the unzipped folder:
base64 -d < manifest.sig > manifest.sig.bin openssl pkeyutl -verify -pubin -inkey public-key.pem -rawin -in manifest.json -sigfile manifest.sig.bin # Signature Verified Successfully sha256sum -c SHA256SUMS # macOS: shasum -a 256 -c SHA256SUMS
Publish a page at https://vectoraxis.ai/trust/your-company for your customers’ reviewers. You choose the address (3 to 63 lower-case letters, digits or dashes), the company name, a contact email, whether it covers the whole organization or one workspace, and which sections it shows: sub-processors, data handling, safety checks, approved providers and sub-processor changes. The preview on the Trust page tab is exactly what will be public.
- It covers the last 90 days and is built from the same reports, with what is internal removed: no request counts, dates seen, keys, models or tool hosts. Approved providers are named only while the policy is enforced.
- Search engines are asked not to index it unless you allow it.
- The public copy refreshes within ten minutes of a change. Unpublishing takes it down at once (cached copies clear within ten minutes) and keeps your settings.
- Publishing needs a Pro or Enterprise plan; unpublishing never does. If the plan lapses, the page stops being served.
39 questions that come up in AI vendor reviews, in five groups: AI providers and sub-processors, data handling, safety controls, security, audit and evidence, and governance. 26 are answered from your records and settings when you open them, where the records hold an answer (provider terms, retention, guardrails, the policy, evidence signing), and stay current. The other 13 only you can answer, such as encryption at rest in your deployment, certifications or your internal review process; each comes with guidance.
- Each question shows Generated, Answered (your own answer, which replaces the generated one) or Needs answer.
- Write or edit an answer inline (up to 10,000 characters); clearing it brings the generated answer back. Every change is audited.
- Export the whole set as CSV or XLSX to paste into a customer’s spreadsheet.
- Reports count your requests in every region that holds your logs, whichever region serves the report. Only totals move between regions, never your log rows. If a region cannot be reached, the report answers 503 and names the region, rather than showing totals that leave it out.
- Evidence bundles are stored in one place for every region, so a bundle downloads from any region.
- An evidence bundle’s requests.csv lists the requests of the region that built it; its reports cover every region.
- Provider terms change; VectorAxis reviews the catalogue at least quarterly. Check a provider’s own terms before relying on them.