Releases

Changelog

Every release, security fix and change to SignalVault, published with a date.

v0.18.2 · Today Latest

Maintenance

No change to the API, the proxy or the dashboard.

Improved

  • Maintenance

    No change to the API, the proxy or the dashboard.

v0.18.1 · 1 day ago

Usage reporting

Fixed

  • Usage reporting

    Usage is reported for billing every hour and appears on your next monthly invoice.

v0.18.0 · 1 day ago

Plans per organization, with requests included

Starter, Growth and the new Compliance plan each cover every app in your organization, with requests included every month and usage-based pricing above them. Tax is calculated at checkout.

Added

  • Plans per organization

    A plan covers every app in your organization, where each app had its own: Starter ($49 a month, 1 app), Growth ($149, up to 5 apps) or Compliance ($499, unlimited apps). Choose, upgrade, downgrade or cancel from Account › Billing. An upgrade applies at once and the difference for the rest of the billing period is charged then; a downgrade or a cancellation applies at the end of the period, and you can undo it until then. When a plan allows fewer apps than you have, you choose which stay active. The others are paused and keep their rules, keys and history; a request with a paused app's key gets a 402 with the code app_paused and a link to Account › Billing.

  • Compliance plan

    Unlimited apps, 250,000 requests a month included, $3 per 1,000 above that, and two years of history. Scheduled exports, SSO and an auditor role are planned for Q1 2027.

  • Requests included, usage above them

    Each plan includes requests every month: 10,000 on Starter, 50,000 on Growth and 250,000 on Compliance. Requests above that are billed with the next monthly invoice, at $5, $4 or $3 per 1,000, and going over never stops your requests. You pay for checked requests that reach your provider: blocked and unchecked requests, duplicates of a request and requests whose provider call failed are not billed. Account › Billing shows the requests this period.

  • Tax at checkout

    Prices exclude tax. Checkout asks for your billing address and adds VAT where it applies. A business in another EU country can enter its VAT number, and the invoice is reverse-charged.

  • A next step after the sample event

    Once an app has sent the sample event from the setup page, its events page shows how to send a real request through the proxy: the base URL, the X-SignalVault-Key header and a cURL command for OpenAI and Anthropic, with which key SIGNALVAULT_API_KEY holds. It goes away when the app's own first request arrives.

v0.17.4 · 6 days ago

Maintenance

No change to the API, the proxy or the dashboard.

Improved

  • Maintenance

    No change to the API, the proxy or the dashboard.

v0.17.3 · 6 days ago

Maintenance

No change to the API, the proxy or the dashboard.

Improved

  • Maintenance

    No change to the API, the proxy or the dashboard.

v0.17.2 · 6 days ago

Audit events are delivered even when rule checks are rate-limited

A request over the rule-check limit is still recorded, and the SDKs queue and retry audit events.

Improved

  • Requests over the rule-check limit are recorded

    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.

  • Audit events queued and retried

    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.

Fixed

  • Rate limits per route

    Events, proxy requests and dashboard sign-ins each count only towards their own rate limit.

  • Request page costs

    A response's cost is shown to at most eight decimals.

  • Events page with sampling

    Requests whose prompt was not sampled are listed with an empty preview.

v0.17.1 · 8 days ago

New-app defaults in the detection docs

Improved

  • New-app defaults in the detection docs

    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.

v0.17.0 · 8 days ago

1,000 free requests, at least 14 days

The free trial includes 1,000 requests and runs for at least 14 days, shared by all your apps.

Improved

  • 1,000 free requests, at least 14 days

    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.

  • One trial for all your apps

    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.

Fixed

  • Billing reliability

    Renewal dates stay accurate when webhooks arrive out of order.

v0.16.5 · 8 days ago

API keys stored as HMAC only

API keys are stored only as an HMAC-SHA256 hash.

Security

  • API keys stored as HMAC only

    Each API key is stored as an HMAC-SHA256 hash, keyed with a secret held outside the database, and looked up by that hash alone. Raw keys are never stored. Existing keys keep working; there is nothing to change.

v0.16.4 · 8 days ago

Event search by ID and metadata

The event search box finds events by request ID, tool name and the metadata you send with them.

Improved

  • Search by request ID, tool name and metadata

    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.

v0.16.3 · 9 days ago

Complete audit export

The audit export holds every field SignalVault stores encrypted, in readable form.

Improved

  • Every encrypted field in the export

    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.

  • A new last column in CSV exports

    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.

v0.16.2 · 9 days ago

EU VAT numbers and more European identifiers

The PII rule detects EU VAT numbers, identity and tax numbers from Austria, Belgium, Estonia, Ireland, Poland and Portugal, Swiss AHV numbers and UK NHS numbers.

Added

  • EU VAT numbers

    vat_eu finds VAT numbers from all 27 member states, written with their country prefix (EL for Greece), and confirms each by that country's check digits.

  • More EU identity and tax numbers

    pesel_pl (Poland), rrn_be (Belgium), ppsn_ie (Ireland) and isikukood_ee (Estonia) are confirmed by their check digit or letter, and by the date of birth where the number holds one. nif_pt (Portugal) and svnr_at (Austria) count only after a word that names them, such as NIF or SVNR, on the same line. Each country's code (at, be, ee, ie, pl, pt) can be named in a rule on its own.

  • Swiss AHV numbers

    ahv_ch finds 13-digit AHV/AVS numbers starting 756, confirmed by their check digit, in a new Switzerland region (ch).

  • UK NHS numbers

    nhs_gb counts a ten-digit number only after NHS, NHS number or NHS no. on the same line, and confirms its check digit.

  • Regions pick up the new identifiers

    Rules set to eu detect the VAT numbers and the six EU identity and tax numbers from this release, and rules set to gb detect NHS numbers. Rules that name identifiers one by one are unchanged.

v0.16.1 · 10 days ago

EU and UK identifiers

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.

Added

  • EU national identity and tax numbers

    steuer_id_de (German tax ID), nir_fr (French social security number), codice_fiscale_it, and dni_es and nie_es (Spain) are confirmed by their check digit or letter, and the codice fiscale also by the date of birth it holds. A Dutch BSN (bsn_nl) counts only after BSN or burgerservicenummer on the same line, and must pass the 11-proef.

  • UK National Insurance numbers

    nino_gb counts a number only after National Insurance, NI number or NINO on the same line, and ignores prefixes that are never issued.

  • EU and UK regions

    Tick All of European Union or All of United Kingdom in the rule editor, or name eu or gb in a rule's patterns list. eu also covers IBAN and the Danish, Finnish and Swedish numbers. A country code such as de covers that country's identifiers. /docs/detection lists them.

Improved

  • Faster PII scanning

    Most identifiers are found in one pass over the text, so a PII rule scans long prompts in less time.

v0.16.0 · 11 days ago

Nordic identifiers and IBAN

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.

Added

  • IBAN detection

    iban finds bank account numbers from the SEPA countries, spaced or written as one run, and confirms each by the length its country uses and the mod-97 check digits. Rules set to the Global region detect IBANs from this release.

  • Nordic personal identity numbers

    personnummer_se (including samordningsnummer), fodselsnummer_no (including D-nummer), hetu_fi and kennitala_is are confirmed by the date of birth and check digits. Danish numbers have no check digit, so cpr_dk counts a number only after the word CPR on the same line, and redacts the number alone.

  • Nordic region and country codes

    Tick All of Nordics in the rule editor, or name nordics in a rule's patterns list, to detect all five. A country code such as se detects that country's identifiers. /docs/detection lists the names.

Improved

  • New apps detect card numbers and IBANs

    The PII rule created with a new app also detects payment card numbers and IBANs. Existing rules are unchanged.

v0.15.12 · 11 days ago

More precise PII detection

Every identifier the PII rule detects is listed in the docs and the rule editor, and each match is confirmed before it counts.

Added

  • PII detection in the docs

    /docs/detection lists every identifier the PII rule detects, with the name to use in a rule, an example and how a match is confirmed.

Improved

  • Choose PII identifiers by region

    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.

  • PII detection confirms what it finds

    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.

Fixed

  • The rule editor lists every PII identifier

    Identifiers are grouped by region, and the rule saves what is ticked. If you edited a PII rule on the dashboard before 18 October, open it and check that card numbers, IP addresses and dates of birth are ticked if you want them detected.

Security

  • Rule changes are checked against your app

    Turning a rule on or off, editing, saving and deleting it on the dashboard act only on rules of the app you are viewing, which is checked against your account.

v0.15.11 · 11 days ago

Prompt caching in cost

Fixed

  • Cost includes Anthropic prompt caching

    Tokens read from and written to Anthropic's prompt cache are priced at Anthropic's cache prices, with writes to the 1-hour cache at the 1-hour rate when the usage reports them. Costs for apps that use prompt caching are higher from this release; responses recorded before it keep the cost they were stored with.

v0.15.10 · 11 days ago

Encryption and connection security

Security

  • Payload encryption at rest covers every stored event

    Prompts, responses, tool calls and error text are encrypted before they are written. If encryption is unavailable, the event is not stored: the API answers 503 encryption_unavailable, and the same event can be sent again with its event_id. The SDKs retry once on their own.

  • Connections require TLS 1.2 or later

    The site and the API refuse TLS 1.0 and 1.1 and use TLS 1.3 wherever the client supports it.

v0.15.9 · 13 days ago

Changelog, security and blog pages

The changelog, the security page and the blog are rebuilt to be read on any screen, with feeds you can subscribe to.

Added

  • Changelog by release and by kind

    Each release lists what was added, improved, fixed and secured. Filter the page to one kind, jump to a release from the list beside it, and link to any release directly, as in /changelog#v0.15.9.

  • Security page as a specification

    Data protection, transport, access control, retention and infrastructure are set out row by row, with a table of every sub-processor and what it receives.

  • Topics, reading time and contents on the blog

    Posts are grouped by topic, show how long they take to read, and carry a list of their sections that follows you down the page.

  • Feeds for releases and posts

    Subscribe to the changelog at /changelog/feed.xml and to the blog at /blog/feed.xml.

Improved

  • Blog and Security in the navigation

    Both pages are linked from the top of every public page, and the page you are on is marked.

Security

  • Guardrail errors are logged without content

    If a guardrail on the proxy fails, the log records the kind of error and nothing from the request or response.

v0.15.8 · 13 days ago

Redaction through the proxy

A request through the proxy that matches a redact rule is forwarded to your provider with the matched values masked.

Added

  • Claude 4 and Claude 5 prices

    Responses from the Claude 4 and Claude 5 models, Haiku 4.5 through Fable 5.1, are priced at Anthropic's list prices. Claude Haiku 5.5 is priced by the request's prompt length.

Improved

  • Redact rules mask requests through the proxy

    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.

  • The masked request is checked before it is sent

    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.

  • Tool inputs and tool-call arguments are evaluated

    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.

  • Rules apply to requests with tool calls

    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 beside accented letters

    Keyword rules match keywords next to accented letters and typographic punctuation, in either letter case, so violation counts can rise on such text.

  • PII rules match beside non-ASCII 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.

v0.15.7 · 14 days ago

Dashboard periods, billing and rules

Improved

  • Cards follow the selected period

    On Events, the 1h, 24h, 7d and 30d control sets the time range for the event list and for the cards above it.

  • Request and cost lines show every interval

    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.

  • App pages open in place

    Events, Violations, Costs, Rules and Settings open in place, without a page reload.

  • Upgrade opens the app's billing settings

    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.

v0.15.6 · 15 days ago

Repeated responses

Fixed

  • The most recent response is shown

    The Events page and the request page show the most recent response when a response is recorded more than once for the same request.

v0.15.5 · 15 days ago

Costs from list prices

Costs are recorded from a list price or not at all.

Improved

  • Costs come from a list price

    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 what its totals leave out

    Costs shows how many responses its totals leave out and which models they used.

  • Monthly spend limits count responses with a cost

    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.

  • Each model name has its own price entry

    A dated or newly released variant records no cost until it is added. Costs already recorded are unchanged.

  • Anthropic cost from input and output tokens

    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.

v0.15.4 · 15 days ago

Anthropic token counts

Improved

  • Token counts cover Anthropic traffic

    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.

  • Check daily token budgets on Anthropic apps

    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.

  • Token totals on Costs rise for Anthropic apps

    For apps that use Anthropic, token totals on the Costs page rise across the past 30 days.

v0.15.3 · 15 days ago

Tool-call guardrails and sampling

Improved

  • Guardrails run on every tool call

    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.

  • Violation counts reflect all traffic

    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.

  • Violations without a stored payload

    A violation on a tool call whose payload was not stored records which rule matched, with no detail from the payload.

  • One record per violation

    Tool calls through the proxy record each violation once, and a model allowlist rule counts a tool call once, by the model it names.

v0.15.2 · 15 days ago

Sampling follows the plan

Improved

  • Sampling applies on Growth

    Request sampling applies while an app is on the Growth plan. On every other plan each payload is stored in full.

  • Saved rates are kept across plan changes

    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.

v0.15.1 · 15 days ago

Error report hardening

Security

  • Credential headers stay out of error reports

    Error reports exclude request headers that carry credentials: authorization, cookie, your SignalVault key, the provider key sent on proxy requests, and the Stripe webhook signature. This applies to every route.

  • Request bodies stay out of error reports

    Request bodies are not attached to error reports for API, proxy and webhook requests, so prompts stay out of them. On dashboard pages, form fields that hold a secret and single-use links are masked.

  • Key-shaped text is masked

    Anything shaped like an API key, bearer token or webhook secret is masked in the text of an error report before it is sent.

v0.15.0 · 17 days ago

Dashboard redesign

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.

Added

  • Setup guide for your first request

    A new app opens on a four-step page: app created, save your API key, send a request, see it arrive. The request step is a ready-to-paste cURL command for OpenAI or Anthropic that reads the key from SIGNALVAULT_API_KEY, so your first request needs no code change. Setup completes when a request of your own gets a response. Skip for now is remembered, and you can return to the page from Setup guide on Events.

  • Event detail in a drawer

    Selecting an event opens its detail beside the list. The open event is part of the URL, so you can link to it, reload the page, or close it with the back button.

  • An account area of its own

    Apps, Billing, Profile and Security now have their own sections, separate from any single app. The full app list is under Account › Apps.

  • Billing overview

    Your monthly total, next charge and apps on trial, with plan, price and renewal date for each app.

  • App switcher

    Finds apps as you type, and shows each app's plan with its last event or trial progress.

Improved

  • The dashboard opens where you left off

    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.

  • Filter chips on the events list

    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.

  • Tool calls in the event drawer

    Each tool call shows its tool, input and output. Event rows now open from the keyboard too.

  • Readable sub-cent costs

    Costs under a cent read <$0.01 on Events and Costs, with the exact figure on hover and in the event detail.

  • Settings matches Account

    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.

  • Laid out for every screen

    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.

Fixed

  • Alert settings keep unsaved changes

    Every change you make is kept before you save.

v0.14.0 · 28 days ago

Streaming tool guardrails

Tool-call guardrails now run on streaming responses, which is how most chat interfaces work.

Added

  • Tool-call guardrails on streaming responses

    When a model proposes a tool call whose arguments contain PII, secrets or other rule violations, SignalVault redacts the arguments, substitutes a refusal, or forwards the call unchanged — before it reaches your agent.

  • Guardrails on tool results and inputs

    Guardrails inspect tool results and tool inputs, so detections carry through multi-turn loops where tool output feeds the next model turn.

  • Expanded API documentation

    The documentation at /docs covers response codes and error shapes, rate limits, streaming behaviour, tool-use guardrails, export formats, payload limits and what the default rules do on a first request.

  • All environments on Starter

    Development, staging and production API keys are available on Starter.

Improved

  • Tool calls arrive in one frame while they are evaluated

    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 SDK works unchanged

    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.

  • One shape for redaction results

    Redaction results use a consistent shape across the API and both SDKs, with the SDK reference updated to match.

  • Sessions persist across external pages

    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.

  • Email verification page

    The page confirms when you are already signed in and only need to click the link we sent.

  • Reminders for unconfirmed signups

    Signups that have not confirmed their email receive at most two reminders, and unconfirmed accounts are removed after 30 days.

Fixed

  • Renewal dates stay accurate

    Subscription renewal dates and plan changes stay accurate when Stripe delivers webhooks out of order.

  • Sign-in from a long-open page

    Signing in from a page that has been open a while recovers cleanly.

Security

  • Payloads encrypted at rest across every decision

    Prompt and response payloads are encrypted at rest across every decision — allowed, flagged, redacted and blocked. Error text captured from providers is encrypted as well.

  • Rules engine and request limits

    Regular expressions in the rules engine run with bounds against pathological input, request body sizes are capped on ingest and on the proxy, and dependencies are checked against published advisories on every change.

  • Rate limiting on authentication

    Repeated sign-in and password-reset attempts are rate limited.

v0.13.3

Starter environments and integration fixes

Added

  • All environments on Starter

    Development, staging and production API keys are included on the Starter plan. Trial apps gained this in 0.13.2; it now carries through when you subscribe.

  • Email when the trial is used up

    You get an email when your last free trial request is used, so a paused integration is never a surprise.

  • An upgrade link on trial-limit responses

    Trial-limit responses carry an upgrade_url field alongside the existing error type and code, so your client can link a developer straight to billing.

  • Period filters on the events list

    One-click filters for the last hour, 24 hours and 7 days, a live indicator while events are arriving, and new rows highlight as they land.

Improved

  • Proxy base URL includes the api subdomain

    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.

  • A new link for an expired verification

    An expired verification link offers to send a new one.

  • Rebuilt homepage
  • Typography and mobile navigation

    Typography is refreshed, and the mobile navigation menu collapses on small screens.

  • The setup guide can be reopened

    Reopen it from your app dashboard after you dismiss it.

Fixed

  • Email verification takes an explicit click

    An account is verified when its owner clicks the button on the verification page, so a link opened by an email scanner does not verify it.

  • Block responses link to the right environment

    Guardrail block responses link to the dashboard for the environment the request came from.

Security

  • Export window and ownership checks

    The export endpoint caps the days parameter at 365, and app ownership is checked on every dashboard view, including live event updates.

v0.13.2

Trial and onboarding fixes

Improved

  • Development and staging keys during the trial

    Trial apps can create development and staging API keys, so you can evaluate SignalVault locally before pointing production traffic at it.

Fixed

  • Failed requests don't count against the trial

    Upstream provider errors, budget rejections, guardrail blocks and replayed request IDs are not charged.

  • Environment comes from the API key

    The environment used to select guardrail rules is taken from your API key.

  • Trial banner follows the subscription

    The "free trial remaining" banner is shown to trial apps only.

v0.13.1

Security patch

Improved

  • Uptime history on the status page

    The status page links to live uptime history.

Security

  • Authorization checks on dashboard views

    Authorization checks are applied across all dashboard views.

  • Session cookie policy

    Session cookies moved from SameSite=Lax to SameSite=Strict. This returned to Lax in 0.14.0 to keep sessions working across external links.

  • Published security contact

    A security contact is published at /.well-known/security.txt, so researchers have a documented way to report issues.

v0.13.0

Reliability

Improved

  • Recoverable delivery jobs

    Failed delivery jobs are detected and recoverable without manual intervention.

v0.12.0

Security and dashboard improvements

Improved

  • Session handling

    Session handling and authentication are consistent across all dashboard views.

  • Email verification

    The email verification flow recovers from delivery failures.

Security

  • Dashboard app access

    Each app is strictly scoped to its owner account on every load.

v0.11.0

Non-streaming tool call capture

Added

  • Tool calls captured in non-streaming proxy mode

    Tool calls in non-streaming proxy mode are captured and audited, alongside streaming requests.

  • Content-block-aware request analysis

    Structured Anthropic content blocks (text, tool_use, tool_result) are each evaluated independently.

  • Guardrails on tool call inputs and outputs

    Guardrail rules evaluate tool call inputs and outputs on both streaming and non-streaming paths, and violations are recorded for both. In this release, enforcement — blocking or rewriting a proposed tool call — applies to non-streaming responses.

v0.10.0

Tool call audit logs

Added

  • Tool calls captured automatically

    Captured when proxying OpenAI or Anthropic, for streaming and non-streaming requests. No SDK changes required.

  • Tools offered on the request detail page

    A "Tools Offered" section shows which tools were exposed to the model on each request.

  • PII and secret detection on tool inputs and outputs

    The JSON path of the offending field is surfaced on every violation.

  • Field-level redaction in the audit log

    Sensitive values are masked while sibling fields stay readable for debugging.

  • Filter events by tool calls

    Filter the events list by tool calls alongside requests, violations, errors and budget.

v0.9.0

Launch hardening

Added

  • Up to 5 API keys per app

    With labels, last-used tracking and revocation.

  • Real-time event feed

    New events appear in the dashboard without a page reload.

Improved

  • Event lists and analytics

    Paging on event lists, 7-day activity counts on app cards, and analytics that refresh automatically.

Security

  • Bot protection on sign-up

    Cloudflare Turnstile and disposable-email domain blocking on sign-up.

  • Email verification before dashboard access

    Verification is required before dashboard access, with rate-limited resend.

v0.8.0

Refreshed UI

Improved

  • Redesigned dashboard

    New sidebar navigation and improved mobile support.

  • Refreshed public pages

    Landing, pricing, blog and documentation pages are refreshed.

  • One visual design

    The same visual design throughout the app.

v0.7.0

New rule types

Added

  • Prompt injection detection

    With configurable sensitivity: standard and strict modes.

  • Regex match rule

    With label support and execution timeout protection.

  • Keyword blocklist

    Case-insensitive, word-boundary matching.

  • Model allowlist

    Restrict which AI models an app may use.

v0.6.0

Transparent proxy endpoint

Added

  • Proxy endpoint

    Point your existing OpenAI or Anthropic client at SignalVault with a one-line URL change. No SDK required.

  • Guardrail enforcement in-path

    Block and redact rules stop requests before they reach the upstream provider.

  • Streaming support

    Streaming (SSE) is supported for both providers. Chunks are forwarded in real time and the response is logged after the stream completes.

  • Anthropic token and cost tracking

    For both streaming and non-streaming responses.

Improved

  • Rate limiting per app

    Rate limits apply per app (60 requests per minute) rather than per IP.

v0.5.0

Webhook alerts, response redaction and data retention

Added

  • Webhook alerts

    Send alerts to any HTTPS endpoint. Slack URLs get rich Block Kit messages, all others get plain JSON.

  • Response redaction

    Rules with the redact action mask matched content in stored payloads before write.

  • Data retention card in Settings

    See your retention period, total stored events, oldest event date and next purge cutoff.

v0.4.0

Email alerts and pricing

Added

  • Email alerts

    For policy violations, budget breaches and AI errors, on the Growth plan.

  • Configurable alert settings

    Event types, minimum severity, cooldown and recipient.

  • Node.js and Python SDKs
  • Plans and billing documentation

Improved

  • Subscribe from the pricing page

    Signed-in users can subscribe directly without leaving the page.

v0.3.0

Budget controls and billing

Added

  • Budget limits per app

    Set monthly cost and daily token limits per app, with dashboard alerts when budgets are exceeded.

  • Audit log export

    Export audit logs as CSV or JSON.

  • Dashboard analytics

    Request volume, violation rate and cost tracking.

  • Stripe billing

    For Starter and Growth plans.

Security

  • Encryption at rest

    All prompts and responses are encrypted at rest.

v0.2.0

Security hardening

Security

  • Stronger API key hashing
  • Rate limiting on login and API endpoints
  • Improved session security
v0.1.0

Initial release

Added

  • Request and response logging

    AI request and response logging with a full audit trail.

  • Guardrail rules

    PII detection, secret scanning, token limits and model allowlists.

  • Dashboard

    Filtering, sorting and request detail views.

  • Node.js SDK

    With an OpenAI-compatible wrapper and mirror mode.