Maintenance
No change to the API, the proxy or the dashboard.
Improved
-
Maintenance
No change to the API, the proxy or the dashboard.
Releases
Every release, security fix and change to SignalVault, published with a date.
No change to the API, the proxy or the dashboard.
No change to the API, the proxy or the dashboard.
No change to the API, the proxy or the dashboard.
No change to the API, the proxy or the dashboard.
No change to the API, the proxy or the dashboard.
No change to the API, the proxy or the dashboard.
A request over the rule-check limit is still recorded, and the SDKs queue and retry audit events.
Above 120 rule checks a minute per app, a request is still recorded in the audit trail, marked unchecked, with whether your SDK sent it on to the provider. No rule runs on it and its prompt is not stored. The dashboard labels unchecked requests and counts them per app. With Node SDK 0.6.0 or Python SDK 0.7.0, its response is recorded too.
Node SDK 0.6.0 and Python SDK 0.7.0 keep audit events in a queue and retry a failed send up to 6 times over about two minutes, without storing anything twice. Closing the client or exiting waits up to 10 seconds for queued events, and any event that is dropped is logged with its event_id and counted. Responses and tool calls do not use rule checks. Every event type shares one ceiling of 3,000 events a minute per app.
The PII detection page lists the identifiers a new app's PII rule starts with: email addresses, phone numbers, US social security numbers, payment card numbers and IBANs. Every other identifier on the page can be added to the rule.
The free trial includes 1,000 requests and runs for at least 14 days, shared by all your apps.
The trial runs for at least 14 days whatever you send, up to 5,000 requests. From day 14 it ends at 1,000 requests, and on day 60 it ends whatever the count. Choose a plan before the trial ends and requests carry on without a break. The dashboard shows the count and the dates. A request after the trial has ended gets a 429 with the code trial_limit_exceeded and a link to choose a plan.
An account's apps share one trial, where each app had its own, and an account on trial can hold up to 5 apps. If you were on the trial before 21 October, your 14 days start on 21 October and the requests you have already sent count towards the 1,000.
The event search box finds events by request ID, tool name and the metadata you send with them.
The search box on the events page matches model, provider, request and event IDs, tool names and metadata values, such as a user or session ID. The term is matched as typed, so % and _ are not wildcards. Prompts and responses are encrypted at rest and are not searched.
The audit export holds every field SignalVault stores encrypted, in readable form.
The JSON export decrypts every field SignalVault encrypts: prompts and responses, message lists, tool definitions, tool-call inputs and outputs, and provider error text. Each keeps its key name, such as payload.tool_input_encrypted. An export downloaded before 20 October holds these fields encrypted; download it again for a readable copy.
CSV exports end with an unavailable_fields column, which names any stored field that could not be read and is otherwise empty. A JSON row carries unavailable_fields only when it names a field. If you read CSV exports by column position, allow for the new last column.
The PII rule detects national identity and tax numbers from Germany, France, Italy, the Netherlands and Spain, and UK National Insurance numbers, and scans long prompts in less time.
Most identifiers are found in one pass over the text, so a PII rule scans long prompts in less time.
The PII rule detects IBANs and personal identity numbers from Denmark, Finland, Iceland, Norway and Sweden, each confirmed by its check digits or its date.
The PII rule created with a new app also detects payment card numbers and IBANs. Existing rules are unchanged.
Every identifier the PII rule detects is listed in the docs and the rule editor, and each match is confirmed before it counts.
Tick a whole region in the rule editor, or name it in a rule's patterns list ("us"), and the rule detects every identifier for that region, including ones added later. Each addition is named in the changelog.
Card numbers must pass their Luhn check digit, IP addresses must have four parts from 0 to 255, US phone numbers need an area code and exchange that can exist, and social security numbers that are never issued are ignored. Order numbers, timestamps and similar values are flagged less often, so a PII rule set to block or redact refuses fewer requests that hold none.
The changelog, the security page and the blog are rebuilt to be read on any screen, with feeds you can subscribe to.
Both pages are linked from the top of every public page, and the page you are on is marked.
A request through the proxy that matches a redact rule is forwarded to your provider with the matched values masked.
A request through the proxy that matches a redact rule is forwarded to your provider with the matched values masked. Message text, the Anthropic system field, tool inputs and results, and tool-call arguments are rewritten; the rest of the request is sent as you wrote it. This covers OpenAI and Anthropic, streaming and non-streaming, and the response carries the header x-signalvault-decision: redact. To refuse a matching request instead, set the rule's action to block.
It is evaluated against your rules again and compared with the text stored for the request. It is refused with a 400, and nothing reaches your provider, when the rule's type has nothing to mask, when a match cannot be removed cleanly, or when an exact copy of a masked value (8 bytes or more) is still present elsewhere in the request. The response carries a reason code and a description, and the refusal appears in your dashboard with the same reason.
Rules evaluate the string values in tool inputs and tool-call arguments before a request is forwarded, for OpenAI and Anthropic, through the proxy and on the events API. The values in one tool input are read as lines of one text, so a pattern can match across two adjacent values.
Requests that carry tool calls can be flagged, masked or blocked by your rules. Violation counts and token estimates rise for apps that send OpenAI tool calls, and argument values count toward the 200 KB prompt limit. For Anthropic, stored prompt text lists tool input values one per line, and token estimates fall for requests whose tool inputs are objects.
Keyword rules match keywords next to accented letters and typographic punctuation, in either letter case, so violation counts can rise on such text.
Built-in PII rules match a value directly beside a typographic quote, an accented letter, or non-Latin text such as Chinese or Cyrillic, the way they match a value between spaces. Violation counts can rise on such text.
On Events, the 1h, 24h, 7d and 30d control sets the time range for the event list and for the cards above it.
The request and cost lines show every interval in the selected range, including ones with no activity, so quiet periods show as a drop to zero.
Events, Violations, Costs, Rules and Settings open in place, without a page reload.
Upgrade on the Rules page opens that app's Settings › Billing, where you change its plan. "Manage in Stripe" there covers payment methods, invoices and cancellation.
Costs are recorded from a list price or not at all.
A response is priced when its model is in our price table by exact name. For any other model, no cost is recorded and the dashboard shows that it is not available. You can always send cost_usd on the response to record your own figure.
Costs shows how many responses its totals leave out and which models they used.
A monthly spend limit counts only responses that have a cost. If you use a model that is not in the price table, those responses do not count towards the limit — Settings › Budgets shows how many that is this month. Send cost_usd on the response, or use a daily token limit, which counts every response.
A dated or newly released variant records no cost until it is added. Costs already recorded are unchanged.
For Anthropic, cost is worked out from input and output tokens. Prompt-cache tokens count towards your token budget and are not included in the cost.
The daily token budget, the token figures on Events and the token totals on Costs count requests made through the Anthropic proxy, including tokens read from or written to Anthropic's prompt cache.
This applies to usage already recorded today. If an app has a daily token budget and uses Anthropic, check the limit is still where you want it — an app that is already past it will have its next proxy request refused with a 402 until the next UTC day or until you raise the limit.
For apps that use Anthropic, token totals on the Costs page rise across the past 30 days.
Guardrails run on tool calls whatever your sampling rate, the same as on requests and responses. A tool call whose payload is not stored is still evaluated, and a match is recorded with the rule's decision.
If you use sampling below 100, tool calls that match a rule show as warn, redact or block, and violation counts and alerts reflect all of your traffic. Expect those counts to rise.
A violation on a tool call whose payload was not stored records which rule matched, with no detail from the payload.
Tool calls through the proxy record each violation once, and a model allowlist rule counts a tool call once, by the model it names.
Request sampling applies while an app is on the Growth plan. On every other plan each payload is stored in full.
If you saved a sampling rate on Growth and later moved the app to another plan, it stores full payloads from now on. The saved rate is kept and applies again if the app returns to Growth.
The dashboard is now organised around one app at a time, with a guided setup for your first request and an event detail you can link to.
It takes you to the app you were last in. With no record of one it opens the app with the most recent event, and a new account goes straight to creating its first app.
A segmented period control, a filter menu, and a chip for each active filter that removes it in one click. Changing a filter or the period returns you to the newest events.
Each tool call shows its tool, input and output. Event rows now open from the keyboard too.
Costs under a cent read <$0.01 on Events and Costs, with the exact figure on hover and in the event detail.
Same layout, with each section under its own title. The alerts section is now named Alerts, and a new API key is shown once with Copy key and Copy as .env.
Every dashboard and account page works on phones, tablets and desktop. Creating an app has its own page, and dashboard pages open with their own header.
Tool-call guardrails now run on streaming responses, which is how most chat interfaces work.
While a tool call is being evaluated it arrives in a single frame rather than token by token. Text content streams as before, and most agent clients do not render tool arguments incrementally.
The Anthropic proxy accepts the x-api-key header used by the official Anthropic SDK. If you configured an Anthropic integration before 29 September, check that your base URL reads https://api.signalvault.io/proxy/anthropic — without /v1, which the Anthropic SDK appends itself. The OpenAI base URL does include /v1, since that client expects it.
Redaction results use a consistent shape across the API and both SDKs, with the SDK reference updated to match.
Sessions persist when you return to SignalVault from an external page — Stripe Checkout, an email verification link, or a link from the documentation. If a subscription or verification did not go through between 3 September and 1 October, it should work now.
The page confirms when you are already signed in and only need to click the link we sent.
Signups that have not confirmed their email receive at most two reminders, and unconfirmed accounts are removed after 30 days.
The proxy base URL shown in Settings and in the setup guide includes the api. subdomain. If you configured an integration before 27 September, check your base URL — it should read https://api.signalvault.io/proxy/openai/v1.
An expired verification link offers to send a new one.
Typography is refreshed, and the mobile navigation menu collapses on small screens.
Reopen it from your app dashboard after you dismiss it.
Trial apps can create development and staging API keys, so you can evaluate SignalVault locally before pointing production traffic at it.
The status page links to live uptime history.
Failed delivery jobs are detected and recoverable without manual intervention.
Session handling and authentication are consistent across all dashboard views.
The email verification flow recovers from delivery failures.
Paging on event lists, 7-day activity counts on app cards, and analytics that refresh automatically.
New sidebar navigation and improved mobile support.
Landing, pricing, blog and documentation pages are refreshed.
The same visual design throughout the app.
Rate limits apply per app (60 requests per minute) rather than per IP.
Signed-in users can subscribe directly without leaving the page.