Documentation

VaultMorph AI Shield

Version 1.0.0-beta  ·  Rules v2.1.0 · 127 patterns  ·  Last updated: July 2026

Overview

VaultMorph AI Shield is a desktop application that protects sensitive data when you use AI assistants. It intercepts your prompts, replaces secrets with anonymised tokens, sends the sanitized version to the AI, then restores the original values in the response — all locally, all in real time.

Core security guarantee: Raw secrets — API keys, passwords, PII, financial data, India-specific identifiers — never leave your device. The AI provider receives only sanitized tokens.

What gets detected and protected

CategoryExamplesRules
API KeysOpenAI, Anthropic, AWS, GitHub, Stripe, Groq, xAI, Perplexity, Razorpay, 70+ more79
TokensJWTs, bearer tokens, Supabase service roles, HashiCorp Vault6
Private KeysRSA, EC, DSA, OpenSSH, PGP, GCP service accounts4
CredentialsPasswords, .env secrets, admin credentials5
Connection StringsMongoDB, PostgreSQL, MySQL, Redis, MSSQL, Elasticsearch, Cassandra8
PIIEmail addresses, phone numbers, US SSN6
FinancialCredit/debit card numbers (Visa, MC, Amex, Discover), IBAN2
India PIIPAN card, Aadhaar, UPI IDs, OTP / verification codes8
InfrastructurePrivate IPs (RFC 1918), MAC addresses, internal hostnames8
NetworkPublic IP addresses1

Installation

System requirements

PlatformMinimumNotes
WindowsWindows 10 (64-bit)Windows 11 recommended
macOSmacOS 12 MontereyApple Silicon and Intel both supported
LinuxUbuntu 22.04 / Debian 11WebKitGTK required

Download

Download from GitHub Releases. After downloading, verify the file: vaultmorph.org/verify →

  • Windows: ai-shield-setup-x64.msi
  • macOS (Apple Silicon): ai-shield-aarch64.dmg
  • macOS (Intel): ai-shield-x64.dmg
  • Linux (Debian/Ubuntu): ai-shield-amd64.deb
  • Linux (RHEL/Fedora): ai-shield-x86_64.rpm

Quick start

  1. Install using the platform installer above.
  2. Launch the app. Community Edition is ready immediately — no account or internet connection required.
  3. Add a provider in Settings → Providers. Choose from 10+ providers; enter your API key. The key is encrypted with AES-256-GCM and stored in your OS keychain.
  4. Type or paste a message that contains sensitive data. The Findings panel shows what was detected, grouped by category and severity.
  5. Press Send. The sanitized version goes to the AI. The AI's response is automatically restored so you see original values — the provider never did.

Keyboard shortcuts: Enter = send  ·  Ctrl+Enter (Cmd+Enter on Mac) = new line  ·  @ = open interchat picker

Verify your download

Every release ships with SHA-256 checksums and Ed25519 signatures. Visit vaultmorph.org/verify to check your download online, or use the CLI instructions there.

How it works

The full pipeline runs in-memory on your device:

Your text (prompt + any attached document content)
    ↓
[Detection engine] — 127 patterns across 10 categories
    ↓
[Tokeniser] — replaces each secret with a unique token
    e.g. "sk-abc123"          → "<"
         "user@company.com"   → "<"
         "4111111111111111"   → "<"
         "ABCDE1234F"         → "<"
    ↓
Sanitized prompt → AI provider (secrets replaced by tokens)
    ↓
AI response (contains tokens, not secrets)
    ↓
[Restore engine] — replaces tokens with original values
    ↓
You see the fully restored response

Attached document text is prepended to the prompt and passes through the same sanitization pipeline, so secrets inside uploaded files are also protected before reaching the AI.

The token map lives entirely in memory for the session's lifetime. Tokens are never written to disk as plaintext. Conversation history stores sanitized tokens, not raw secrets.

Detection rules

EditionTotal rulesCategoriesBundled version
Community110All 10 categoriesv2.1.0
Pro / Enterprise127 (+17 pro-only)All 10 categories + extended API keysv2.1.0

Rule severity breakdown (127 total)

Critical 77 rules
High 32 rules
Medium 10 rules
Low 8 rules

Detection categories

CategoryWhat's detectedSeverities
API Keys (79 rules) OpenAI (sk-*, sk-proj-*), Anthropic (sk-ant-*), Google (AIza*), GitHub (ghp_/gho_/ghs_/github_pat_), GitLab (glpat-*), AWS (AKIA*), Slack (xox*), Stripe (sk_live_/sk_test_), SendGrid (SG.*), npm, HashiCorp Vault (hvs.*), DigitalOcean (dop_v1_*), Shopify (shpat_*), Hugging Face (hf_*), NVIDIA (nvapi-*), Groq (gsk_*), xAI (xai-*), Perplexity (pplx-*), Replicate (r8_*), Resend (re_*), Razorpay (rzp_*), Fly.io (fo1_*), PlanetScale (pscale_tkn_*), Sentry (sntrys_*), Slack/Discord Webhook URLs, and 50+ more Critical High
Tokens (6 rules) JWT tokens (eyJ*), Supabase service role keys, bearer tokens in labeled context, HashiCorp Vault tokens Critical High
Private Keys (4 rules) RSA, EC, DSA, OpenSSH private key PEM blocks; PGP private key blocks; GCP service account JSON Critical
Credentials (5 rules) Passwords in .env / config files (quoted and unquoted), environment variable blocks, admin credentials High
Connection Strings (8 rules) MongoDB (mongodb://*, mongodb+srv://*), PostgreSQL, MySQL, Redis, MSSQL, Elasticsearch, Cassandra DSNs Critical
PII (6 rules) Email addresses, international phone numbers, US-format phone numbers, US Social Security Numbers (SSN) Critical Medium Low
Financial (2 rules) Credit and debit card numbers (Visa 4*, Mastercard 5*, Amex 3*, Discover 6*); IBAN account numbers Critical High
India PII (8 rules) PAN card numbers (ABCDE1234F format), Aadhaar numbers (spaced 12-digit), UPI IDs (40+ bank handles: okaxis, paytm, ybl, upi, and more), OTP / verification codes labeled in context High
Infrastructure (8 rules) Private IPv4 (RFC 1918: 10.x, 172.16–31.x, 192.168.x), MAC addresses (colon and hyphen notation), internal hostnames and FQDNs Medium
Network (1 rule) Public IPv4 addresses Low

Risk scoring

Every prompt is assigned a numeric risk score (0–100) based on the severity and number of findings detected. This score drives the colour-coded risk badge in the Findings panel.

Risk levelScore rangeBadge colourMeaning
Critical75–100RedExtremely sensitive data present — review carefully before sending
High50–74OrangeSignificant secrets detected
Medium25–49YellowModerate sensitivity (PII, internal IPs)
Low0–24GreenLow-sensitivity data or no findings

Score calculation

Base scores per finding: Critical = 60 pts  ·  High = 35 pts  ·  Medium = 15 pts  ·  Low = 5 pts.

Diminishing returns apply when multiple findings share the same severity (×1.0, ×0.5, ×0.25 for 3rd+), preventing artificially inflated scores when the same type of secret appears many times. The final score is capped at 100.

Token format

Each sanitized value is replaced with a structured placeholder:

<<VM_TOKEN_[TYPE]_[INDEX]_[HASH2]>>
Type codeMeaningExample
KEYAPI key (generic)<<VM_TOKEN_KEY_1_A3>>
TOKENJWT / bearer token<<VM_TOKEN_TOKEN_1_B9>>
PRIVPEM private key<<VM_TOKEN_PRIV_1_C1>>
CREDPassword / credential<<VM_TOKEN_CRED_1_D4>>
CONNConnection string / DSN<<VM_TOKEN_CONN_1_E7>>
EMAILEmail address<<VM_TOKEN_EMAIL_1_F2>>
PHONEPhone number<<VM_TOKEN_PHONE_1_G5>>
SSNSocial Security Number<<VM_TOKEN_SSN_1_H8>>
CARDCredit/debit card<<VM_TOKEN_CARD_1_I3>>
IBANBank account (IBAN)<<VM_TOKEN_IBAN_1_J6>>
PANIndia PAN card<<VM_TOKEN_PAN_1_K9>>
OTPOTP / verification code<<VM_TOKEN_OTP_1_L1>>
IPIP address / hostname<<VM_TOKEN_IP_1_M4>>

You can copy any token placeholder from the Findings panel using the ⎘ copy button next to each finding — useful when you want to paste the placeholder into another tool.

Native providers

Native providers have dedicated integration and model-list fetching.

ProviderNotable modelsStreamingNotes
OpenAI GPT-4o, GPT-4o Mini, o1, o3-mini Model list fetched live
Anthropic Claude Sonnet 4.6, Claude Haiku 4.5, Claude Opus 4.8 Model list fetched live
Google Gemini 2.0 Flash, Gemini 1.5 Pro, Gemini 1.5 Flash Model list fetched live

Extended providers (OpenAI-compatible)

All extended providers use the OpenAI chat-completions wire format. Select Custom Provider in the provider selector to access them.

ProviderFree models?Highlight models
NVIDIA NIM free tier Yes — 9 free models Nemotron 70B, Llama 3.3 70B, DeepSeek R1, Qwen 2.5 72B, Mistral NeMo 12B, Phi-3 Medium 128k, Gemma 2 27B, Mixtral 8×7B
Groq free tier Yes — all models free (rate-limited) Llama 3.3 70B Versatile, Llama 3.1 8B Instant, DeepSeek R1 Distill Llama 70B, Llama 3.2 11B Vision, Gemma 2 9B
OpenRouter free tier Yes — 4+ free models Llama 3.3 70B (free), DeepSeek R1 (free), Mistral 7B (free), Gemma 2 9B (free); plus GPT-4o, Claude Sonnet 4.6, Gemini 2.0 Flash (paid)
Mistral AI free tier Yes — open-weight models Mistral 7B (free), Mixtral 8×7B (free), Mistral Large, Mistral Small, Codestral
Together AI Free credits on signup Llama 3.1 8B Turbo, Llama 3.3 70B Turbo, Qwen 2.5 72B Turbo, DeepSeek R1, Qwen 2.5 Coder 32B
DeepSeek No — very cheap per-token DeepSeek Chat V3, DeepSeek Reasoner (R1)
Perplexity No Sonar Large Online (real-time web search), Sonar Small Online, Sonar Large Chat

Subscription providers New

Subscription providers route traffic through a locally installed CLI backed by your own AI subscription — no API key required. Enable them in Settings → Subscription Models, then select them in Provider & Models.

Claude Code (Claude Pro / Max subscription)

Routes chat and Security Workspace code review through the local claude CLI using your Claude Pro or Max subscription. Requires the Claude Code CLI installed and signed in.

FieldValue
Setupnpm install -g @anthropic-ai/claude-code, then run claude once to sign in with your Anthropic account
ModelsClaude Code default (CLI chooses), Sonnet, Opus, Haiku
API keyNot required — uses your subscription
NetworkTraffic goes through the Claude Code CLI to Anthropic — same as using Claude Code directly
UsageCounts against your Claude subscription limits

To enable: Settings → Subscription Models → toggle Claude (subscription — Claude Code) to ON → then go to Provider & Models and select it. The status panel shows whether the CLI was detected and its path/version.

ChatGPT (Codex CLI) Coming soon

A future adapter for routing through a Codex CLI backed by a ChatGPT subscription. Reserved — not yet available.

Azure OpenAI

Use your Azure OpenAI Service deployments as a provider. Azure OpenAI uses deployment names (not model names) and a resource-scoped base URL.

FieldWhat to enter
Base URLhttps://<resource-name>.openai.azure.com
Deployment nameYour Azure deployment name (e.g. gpt-4o-prod) — entered as the model field
API keyYour Azure OpenAI resource API key (stored AES-256-GCM encrypted in OS keychain)
API versionDefaults to 2024-10-01-preview — override via the advanced config if needed

Streaming and tool calling are fully supported (same SSE wire format as OpenAI). Select Custom Provider → Azure OpenAI in the Provider & Models settings.

Azure uses an api-key request header rather than a Bearer token. AI Shield handles this automatically for Azure deployments.

AI Gateways

AI gateways act as a unified routing layer in front of multiple AI providers. VaultMorph AI Shield supports two gateways out of the box, enabling features like semantic caching, load balancing, virtual keys, and observability — while still sanitizing secrets before any request leaves your device.

Portkey Gateway

Portkey is a managed AI gateway that routes to OpenAI, Anthropic, Google, and 100+ providers through a single API key. In Settings → Custom Provider, select Portkey and enter:

  • Portkey API key — from your Portkey dashboard
  • Config ID (optional) — a saved routing config (virtual key, fallbacks, load balancing)
  • Cache mode (optional) — simple (exact match) or semantic (AI-powered similarity)

Portkey adds x-portkey-api-key and x-portkey-config headers automatically based on your inputs.

Bifrost Gateway Self-hosted

Bifrost is a self-hosted, open-source AI gateway you deploy in your own infrastructure. Enter your Bifrost base URL and a virtual key to route requests. Supports semantic caching via x-cache-mode and cost controls via virtual key budgets.

Manual (fully custom)

Select Manual to point AI Shield at any OpenAI-compatible endpoint — local models (Ollama, LM Studio), internal proxies, or any server that speaks the OpenAI chat-completions format.

Local / self-hosted models

Use the Manual provider option (Settings → Custom Provider → Manual) to connect to any locally-running model server that implements the OpenAI API:

  • Ollamahttp://localhost:11434/v1
  • LM Studiohttp://localhost:1234/v1
  • vLLM — any address you configure
  • LocalAIhttp://localhost:8080/v1

No API key is required for local models — leave the key field blank.

Community Edition

Free forever. No account. No internet required. No data collected.

FeatureCommunity
Detection rules110 (all 10 categories)
Concurrent sessions3
AI providersAll providers
Conversation historyUnlimited
File attachments
Projects
Interchat context
Export (Markdown / plain text)
Export PDF / JSON
Personal data collectedNone

The license is auto-generated offline on first launch. No registration required.

Pro Trial

The Pro Trial unlocks the full 127-rule pack for 6 months, free. No credit card required.

FeaturePro Trial
Detection rules127 (all categories + 17 extended API key rules)
Concurrent sessionsUnlimited
AI providersAll providers
Export PDF / JSON
Enterprise security report
Personal data collectedEmail + device hash (one-way)

Activating your trial

  1. Open Settings → License
  2. Click "Start Free Pro Trial"
  3. Enter your email address
  4. A license JWT is issued immediately. Requires one internet connection at activation.

After activation the app works fully offline. The license revalidates every 7 days in the background when online. At trial end, the app gracefully downgrades to Community Edition — no data loss.

During the adoption phase, Pro Trial renewals are extended automatically and indefinitely. We will give at least 30 days' notice before any paid plan affects existing trial users.

Enterprise License

Enterprise licenses are offline .vml files signed with Ed25519. They work with no internet connection, cover multiple seats, and can include custom expiry terms. Contact contact@vaultmorph.org.

Activating

  1. Settings → License → Import License File
  2. Select your .vml file
  3. The app verifies the Ed25519 signature and activates immediately

Findings panel

The Findings panel appears below the message input and shows all secrets detected in your current prompt, grouped by category and sorted by severity within each group.

  • Risk badge — colour-coded overall risk level (Critical / High / Medium / Low) with numeric score
  • Severity counts — mini counters per severity level (e.g. "3C 2H" = 3 Critical, 2 High)
  • Category groups — API Key, PII, Token, Credential, Connection String, Financial, India PII, Infrastructure, Network, Private Key
  • Token placeholder — the safe token that will replace the secret in the prompt (e.g. <<VM_TOKEN_KEY_1_A3>>)
  • Copy button ⎘ — copies the token placeholder to clipboard for use elsewhere
  • Toggle — the panel is collapsible; it auto-expands when findings are present

When no secrets are detected, the panel shows a green ✓ No secrets detected badge instead.

Clipboard protection

When enabled, AI Shield monitors your clipboard and alerts you when sensitive data is copied — before you accidentally paste it into an AI chat window outside the application.

Enable in Settings → Advanced → Clipboard monitoring. When a secret is detected a native OS notification appears with options to sanitize, ignore, or dismiss.

Clipboard monitoring is a Pro/Enterprise feature in the current build. Community Edition does not include background clipboard monitoring.

File attachments

Click the 📎 button to attach files. AI Shield scans all attached content through the detection pipeline before sending.

Supported image formats

PNG, JPEG, GIF, WebP — up to 5 MB per file. Images are sent as base64 to multimodal-capable models.

Supported document formats

Text files, Markdown, CSV/TSV, JSON/JSONL, Python, JavaScript/TypeScript, HTML/CSS, XML, YAML/TOML, Shell scripts, .env, .conf, .log, Rust, Go, Java, C/C++, SQL, INI — up to 512 KB, truncated at 12,000 characters.

Document text is prepended to your message and goes through the same sanitization as your typed prompt. Any secrets inside the document are masked before leaving your device.

Remove individual attachments from the preview strip before sending, or remove them from existing messages in the message history.

Interchat context injection

Type @ in the message input to open a picker that lets you inject context from a previous conversation into your current prompt.

  • Start typing after @ to filter conversations by title
  • Use ↑ ↓ to navigate, Enter to select, Escape to close
  • The selected conversation's sanitized content is inserted at the cursor position as a labeled context block
  • The injected context passes through the detection pipeline like any other text

This is useful for chaining conversations — asking a new AI to build on analysis from a previous session — without copy-pasting large amounts of text manually.

Projects

Projects let you organise conversations into named, colour-coded groups in the History sidebar.

Creating a project

  1. Click "+ New project" in the History panel
  2. Enter a project name and pick a colour
  3. Press Enter or click Create

Adding conversations to a project

Click the menu on any conversation item and choose "Move to [project name]". Conversations can only belong to one project at a time.

Managing projects

  • Click the ▶ toggle to collapse / expand a project's conversations
  • Double-click the project name or click ✎ to rename
  • Click × to delete a project (conversations are not deleted — they move to Ungrouped)
  • Conversations not in any project appear under an Ungrouped label when projects exist

Conversation history

Conversations are stored locally in a SQLite database. Stored messages contain sanitized tokens, not raw secrets — your history is safe even if the database file is accessed directly.

  • Auto-save — conversations auto-save 500ms after each message change
  • Rename — double-click a conversation title or click ✎ to rename. User renames are preserved across auto-saves.
  • Delete — click × on a conversation item to delete it
  • Delete message — individual messages can be deleted from the chat (click × on a message bubble)
  • Retry — if the last AI response was unsatisfactory, click the retry button to re-send the last user message
  • Restore — restore original secret values in a saved conversation using the restore button in the message header

Export conversations

Export saved conversations from the conversation menu. Exported files contain the restored, readable text — not raw tokens. Secrets are always restored before export.

FormatExtensionEdition
Markdown.mdAll
Plain text.txtAll
PDF.pdfPro Trial / Enterprise
JSON.jsonPro Trial / Enterprise

Export files never contain finding.match (raw secret values) or sanitizedText (token-substituted text). Only the restored display text is exported.

System prompt

Set a custom system prompt that is prepended to every conversation. Go to Settings → Advanced → System Prompt.

  • The prompt is applied globally — it affects all providers and all new conversations
  • Changes are saved automatically when you click away (on blur)
  • Click Reset to clear the system prompt and revert to the provider's default behaviour
  • If left blank, the default "You are a helpful assistant. Respond concisely." placeholder is used

Advanced parameters (Custom Provider)

When using a Custom Provider, the Advanced settings section exposes fine-grained generation controls:

ParameterRangeDefaultEffect
Temperature0 – 20.2 (chat), 0.6 (reasoning), 0.1 (code)Higher = more creative / random. Lower = more focused / deterministic.
Top P0 – 10.7 (chat), 0.95 (reasoning), 0.9 (code)Nucleus sampling threshold. Lower = more conservative token selection.
Max Tokens64 – 32,0001024 (chat), 4096 (reasoning), 2048 (code)Maximum response length.

Defaults are tuned per model category (chat, reasoning, code). Adjusting from defaults for native providers (OpenAI, Anthropic, Google) is not supported — use Custom Provider for that level of control.

Rule updates

New detection rules are published periodically. Rule pack updates are signed with Ed25519 and verified by the app before applying — a tampered or unsigned update is rejected and the existing rules stay active.

Pro/Enterprise: updates check api.vaultmorph.org/rules/latest automatically in the background. Trigger a manual check in Settings → Advanced → Check for rule updates.

Community: bundled rules (v2.1.0, 110 patterns) are always available offline. Rule update checks require Pro or Enterprise.

Security model

DataLeaves device?Notes
Your raw prompts / secrets❌ NeverSanitized in-memory before any network call
Attached document content❌ Never rawSanitized before sending to AI provider
Sanitized prompts (tokens only)✓ To AI providerContains no sensitive values — tokens only
AI API keys✓ To AI provider onlyNever sent to VaultMorph; AES-256-GCM encrypted in OS keychain
Email address (Pro Trial)✓ To api.vaultmorph.orgOne-time license activation; stored in India (OCI Mumbai)
Device hash (Pro Trial)✓ To api.vaultmorph.orgOne-way SHA-256 hash; not reversible
Conversation history❌ NeverSQLite on your device; stored as tokens, not secrets
Export filesYour choiceWritten locally; content is restored (readable) text
Telemetry / analytics❌ NeverZero telemetry in all editions

FAQ

Can I use Community Edition commercially?

Yes. Community Edition is licensed for any lawful personal or commercial use at no cost, with no restrictions.

How many conversations can I have open at once?

Community Edition supports up to 3 concurrent active sessions. Pro Trial and Enterprise support unlimited concurrent sessions.

Does the Pro Trial auto-charge me?

No. The Pro Trial is completely free and requires no credit card. At the end of 6 months the app downgrades to Community Edition. You will never be charged without explicit consent through a separate billing agreement.

Can I use free AI models?

Yes. Several providers offer genuinely free access: NVIDIA NIM (9 free models), Groq (all models free with rate limits), OpenRouter (4+ free models), and Mistral AI (open-weight models free). Select Custom Provider to access these.

Does AI Shield detect India-specific sensitive data?

Yes. Version v2.1.0 added 8 India PII rules covering PAN cards (format ABCDE1234F), Aadhaar numbers (spaced 12-digit format), UPI IDs (40+ bank handles including okaxis, paytm, ybl, upi, and more), and labeled OTP/verification codes. All are High severity.

Can I use AI Shield with local models (Ollama, LM Studio)?

Yes. Select Custom Provider → Manual, set the base URL to your local server (e.g. http://localhost:11434/v1 for Ollama), enter the model name, and leave the API key blank.

What happens if the AI returns modified token placeholders?

The restore engine uses exact token matching and a fuzzy fallback that handles common AI transformations (formatting changes, line breaks, whitespace). If a token cannot be restored it is left as-is in the displayed response.

Is the source code available?

No. VaultMorph AI Shield is proprietary software. "Free" refers to price, not source access. A full list of open-source components is at vaultmorph.org/attributions.

Can I export conversations with the original secrets visible?

Yes — exported Markdown and plain text files contain the restored, readable text (not tokens). The application restores values before writing the export file.

Custom detection rules

Beyond the 127 built-in patterns, you can add your own regex-based detection rules in Settings → Detection Rules → Custom Rules.

Creating a rule

  1. Click + New rule
  2. Enter a name, regex pattern (JavaScript syntax), severity (Critical / High / Medium / Low), and an optional description
  3. Save — the rule activates immediately for all new messages

Custom rules use the same token format and sanitization pipeline as built-in rules. A custom-rule match produces a <<VM_TOKEN_KEY_N_XX>>-style placeholder that is restored in the response exactly like a built-in detection.

Custom rules run on your device only and are never uploaded to VaultMorph servers.

Security Workspace

The Security Workspace is a dedicated panel (separate from the chat view) for scanning code files and git diffs for secrets and vulnerabilities — without sending raw secrets to any AI provider. Open it from the toolbar icon or via Settings.

DLP-safe pipeline: file contents, diff hunks, finding snippets, and even file paths all pass through the same detect → tokenize → sanitize gate before the AI ever sees them. The AI provider receives only tokens.

Input modes

ModeHow to use
FilesPaste file content or click Browse to open files from disk (up to 5 MB per file). Add multiple files; each is scanned independently and then reviewed together.
DiffPaste a git diff (e.g. output of git diff HEAD~1). Gitleaks secret scan runs on the diff; Semgrep is not available for diff input.
FolderChoose a folder — the workspace walks it locally (skipping node_modules/.git/dist/build/lockfiles/binaries), shows a file checklist for you to confirm, then scans selected files. See Folder scan.

Gitleaks secret scan

Gitleaks is an offline secret-scanning binary bundled with the app (resources/sidecars/gitleaks.exe). It scans files and diffs for committed secrets — API keys, tokens, passwords — using its rule set.

  • No network calls — runs entirely offline via a local sidecar process
  • Supports file content, git diffs, and folder walk modes
  • Findings include: rule ID, matched line/snippet, file path, and start/end line
  • All finding output (snippet, file path, description) is sanitized through the DLP gate before reaching the AI reviewer
  • Bundled binary — no installation required; the Settings → Static Analysis Tools page lets you pin an alternate binary if needed

Semgrep SAST scan

Semgrep is a Static Application Security Testing (SAST) tool that finds vulnerability patterns — injection flaws, insecure crypto, path traversal, XSS, deserialisation, and more — using a curated rule set.

Installation

Semgrep has no standalone Windows binary, so it is not bundled. Install it once from Settings → Static Analysis Tools:

  • Install for me — runs pip install --user semgrep and pins the path automatically (requires Python 3.10+)
  • Auto-detect — finds an existing Semgrep install via the current Python's scripts directory
  • Browse / manual path — pin any Semgrep executable yourself

Rule set

The app ships a bundled custom rule pack covering Go, Java, C#, PHP, Ruby, Rust, Docker/Kubernetes/Terraform, GitHub Actions, and AI/LLM-specific patterns (~150 rules). It additionally vendors a dev-reviewed, pinned-commit snapshot of the Semgrep Community Edition rule set — fetched, checksum-verified, and semgrep --validated before activation. Rule updates never come from a live moving branch.

Vulnerability categories detected

CategoryExamples
INJECTIONSQL injection, command injection, SSRF, XXE, code injection
XSSCross-site scripting, DOM-based XSS
AUTHJWT issues, session/cookie weaknesses, CSRF, missing auth checks
CRYPTOWeak hashes (MD5/SHA-1), insecure random, ECB mode, deprecated ciphers
DESERIALIZATIONUnsafe pickle, yaml.load, Java/PHP deserialisation
PATH_TRAVERSALDirectory traversal, zip slip, local file inclusion
MISCONFIGDebug flags, insecure CORS, missing TLS verification, exposed admin
OTHERAnything not matching the above categories

AI verdicts

After static analysis, the workspace sends the sanitized findings and (optionally) file content to your selected AI provider for a deep security review. The AI produces two outputs:

Narrative review

A structured security review with: severity, root cause, attack path (source → sink for taint-style issues), why the issue is exploitable in this specific code (not generic advice), and a concrete corrected snippet or diff. For Semgrep scans the AI maps full source-to-sink exploit paths naming actual variables and functions.

Structured verdicts

For each static-analysis finding the AI outputs a machine-readable verdict line:

VERDICT | <rule-id> | <file>:<line> | <STATUS> | ACTION: <one-line fix> | REASON: <justification>
StatusMeaning
confirmedIssue is real and reachable — fix immediately
false_positiveNot a real issue in this code — AI explains why
needs_reviewInsufficient code visible to decide — manual review needed

Verdicts are parsed and matched back to findings in the UI so you can see the AI's triage decision alongside each static finding. The AI's narrative is locally restored (tokens replaced with real values) before display — the provider never saw the real values.

Send to chat

Any finding — secret or static — has a Send to chat action. This injects a pre-built prompt into the main chat so you can ask follow-up questions about a specific finding without manually copy-pasting context. The injected text is sanitized exactly like any typed message.

Folder scan

The Folder tab lets you scan an entire project directory. The workflow:

  1. Choose folder — opens a native folder picker
  2. File checklist — the workspace lists all scannable files (node_modules/.git/dist/build/lockfiles/binaries excluded). Select which files to include before anything runs.
  3. Gitleaks scan — click Scan selected files. Secrets are found and displayed per-file with risk scores.
  4. Semgrep scan (optional) — click Run Semgrep SAST. Vulnerability patterns are found across all selected files.
  5. AI review queue — run AI review for all files automatically. The queue processes files sequentially so large projects aren't blocked by per-request size limits. A progress indicator shows current file and queue position.
  6. Semgrep AI review (optional) — focused exploit-path analysis on Semgrep findings across the entire folder (one AI call with all findings batched).
  7. Export HTML report — generates a self-contained security report (see Security report).

Scan state is persistent — switching to the chat view and back does not lose scan results or abort a running queue.

Remote repository scan New

The Remote Repo tab in the Security Workspace lets you scan a Git repository hosted on GitHub, GitLab, or any git server — without cloning it manually. The workflow is identical to the Folder scan once the repo is on disk.

Workflow

  1. Enter the repo URL — e.g. https://github.com/org/repo
  2. Authenticate — provide a Personal Access Token (PAT). You can save named tokens to a local encrypted vault for reuse; the vault only ever returns masked tokens — full PAT values are never read back out.
  3. Select branch or tag — the app fetches the list of refs from the remote and lets you choose one
  4. Clone & scan — the repo is cloned locally into a temporary directory. The file checklist appears, matching the Folder scan experience exactly.
  5. Run Gitleaks and/or Semgrep, then AI review queue — identical to the Folder scan workflow
  6. Cleanup prompt — after the scan you choose whether to keep or delete the local clone. The clone is never kept silently.

Supported hosts

Any git server that accepts HTTPS clone with token auth: GitHub, GitLab, Bitbucket, Azure DevOps, Gitea, Forgejo, and self-hosted instances.

PAT security

  • PATs are stored in the local encrypted PAT vault (AES-256-GCM). They are only used at clone time and never transmitted to VaultMorph servers.
  • The vault only returns a masked token (e.g. ghp_***abc) for display — the full value is never readable back through the UI after saving.
  • The PAT itself is detected by the secret scanning rules if it appears in any scanned file, and is tokenized before reaching the AI reviewer.

File size cap: 10 MB per file. Files above this limit are skipped during scanning.

Security report export

After any scan, click Export report to generate a self-contained HTML security report saved to your Documents folder. The report opens in any browser and can be printed to PDF.

Report contents:

  • Cover page with report ID and timestamp
  • Table of contents
  • Executive summary — total findings by severity and category
  • Scope and methodology (tools used, files scanned)
  • Per-file findings table with file:line locations
  • Detailed findings section per issue — location, problem, evidence snippet, AI-generated remediation
  • AI verdict per finding (confirmed / false positive / needs review)
  • AI narrative review as a closing appendix

Security: SecurityFinding.match (raw matched secret text) is never included in the report. Only token placeholders, types, severities, and line numbers appear. Sanitized static findings (already passed through the DLP gate) are used as-is.

MCP Servers Pro / Enterprise

Model Context Protocol (MCP) servers let the AI call tools you expose locally — file access, local search, database queries, code execution, or any custom tool. Two transports are supported: HTTP (loopback URL) and stdio (local process).

Security: All MCP tool output is treated as untrusted and passes through the same detect → tokenize → sanitize pipeline as anything you type. A compromised MCP server cannot exfiltrate secrets by embedding them in tool output — they are tokenized before reaching the AI.

HTTP transport

  1. Settings → Integrations → MCP Servers → select transport HTTP (localhost)
  2. Enter Server ID, Display name, and loopback URL (e.g. http://127.0.0.1:8931/mcp)
  3. Click + Add — registers immediately. Non-loopback URLs are rejected.

Stdio transport

The stdio transport spawns an arbitrary local process and communicates via newline-delimited JSON-RPC over its stdin/stdout — the same convention used by Claude Desktop's mcpServers config.

Explicit consent required: Before any stdio server is launched, you are shown the exact resolved command line (including env vars and Windows .cmd shim resolution) and must click Approve & Connect. The app never spawns a stdio server automatically. If the stored command ever changes (command, args, or env modified), consent is stale and re-approval is required.

  1. Settings → Integrations → MCP Servers → select transport stdio (local process)
  2. Enter Server ID, Display name, Command (e.g. npx), Arguments (e.g. -y @modelcontextprotocol/server-everything), and optional environment variables (one per line: KEY=value)
  3. Click Review… — the consent box appears showing the exact resolved command
  4. Click Approve & Connect to launch and register

Managing servers

  • Transport badge — each server row shows its transport type (http or stdio)
  • Consent drift — if a stdio server's config changes after approval, the row shows "Launch command changed — re-approval required". Click Review to see the new command before re-approving.
  • Disable / Enable — disabling an http server disconnects it; disabling a stdio server terminates the child process
  • Retry — re-attempt connection for http servers that were temporarily unreachable
  • Remove — unregisters the server and removes it from persistent config immediately

MCP stdio: compatible servers

Any MCP server that follows the stdio transport spec works. Common examples:

# Filesystem access
Command: npx
Args:    -y @modelcontextprotocol/server-filesystem /path/to/dir

# Everything (demo server with all tool types)
Command: npx
Args:    -y @modelcontextprotocol/server-everything

# SQLite
Command: npx
Args:    -y @modelcontextprotocol/server-sqlite /path/to/db.sqlite

The command and args format mirrors the mcpServers object in Claude Desktop's claude_desktop_config.json — if you already have servers configured there, you can use the same command/args here.

Browser Extension

The VaultMorph browser extension brings the same sanitize-send-restore protection to AI web interfaces — without needing the desktop app open. Install it in Chrome or Edge using Developer Mode.

Supported sites

SiteURL
ChatGPTchatgpt.com
Claudeclaude.ai
Geminigemini.google.com
Microsoft Copilotcopilot.microsoft.com

How it works

  • The extension injects into the AI site's input field and monitors what you type
  • Secrets are detected and replaced with VaultMorph tokens before you press Enter
  • The extension observes the AI's streaming response and restores original values automatically
  • Uses the same <<VM_TOKEN_[TYPE]_[N]_[HASH]>> token format as the desktop app — fully compatible
  • All processing is local in the browser — no data leaves the browser extension

Installation

  1. Open the desktop app and go to Settings → Browser Extension
  2. Click Copy to Documents to place the extension in an easy-to-find location
  3. In Chrome or Edge, navigate to chrome://extensions
  4. Enable Developer mode
  5. Click Load unpacked and select the VaultMorphExtension folder

License sync

After activating a Pro Trial or Enterprise license on the desktop app, click Sync License to Extension in Settings → Browser Extension. This generates a one-time token you paste into the extension's License tab so it uses the correct rule set (127 rules for Pro, 110 for Community).

Document generation

Ask the AI to create Excel spreadsheets, Word documents, or PowerPoint presentations directly from the chat. The generated file is saved to your Documents folder and opened automatically.

Supported formats

FormatTrigger example
Excel (.xlsx)"Create a spreadsheet of Q3 sales by region"
Word (.docx)"Write a project proposal as a Word document"
PowerPoint (.pptx)"Make a 5-slide deck summarising this data"

Security model

Document generation uses a two-step pipeline that keeps real values off the network:

  1. Your request (with secrets sanitized as normal) is sent to the AI, which responds with a structured DocGenSpec — a JSON description of the document's content using only tokens.
  2. The spec is validated locally, tokens are restored in-process, and the file is rendered entirely in JavaScript (no AI-generated code is executed on your device). The real values never left.

The AI gets up to 3 self-healing attempts to produce a valid spec if the first response is malformed. The rendered file includes a watermark noting it contains real data restored from tokens.

Artifacts Pro / Enterprise

When the AI generates a self-contained HTML/CSS/JavaScript response (a chart, interactive widget, diagram, or mini-app), AI Shield renders it in a sandboxed WebView — an isolated frame that runs the content safely without giving it access to your sessions, API keys, or file system.

How the sandbox works

  1. The AI's HTML/JS output is wrapped by a sandbox bootstrap before rendering — it cannot reach the parent app's DOM, localStorage, or native APIs
  2. Communication between the sandbox and the app goes through a postMessage protocol with a typed message schema. The sandbox can request specific, approved capabilities (like resizing) but cannot initiate arbitrary calls
  3. The sandbox origin is a dedicated local scheme — browser-origin security policies prevent cross-frame reads

The artifact sandbox is enforced at the app level — it does not depend on the AI's own security awareness. Even if the AI generates malicious JavaScript, it cannot escape the sandbox boundary.

Artifact types

  • Charts & data visualizations — the AI can produce Chart.js, D3, or plain SVG charts based on your data
  • Interactive widgets — calculators, forms, filtering UIs built as self-contained HTML
  • Documents — rich formatted text, tables, or styled reports viewable inline

Artifacts appear as an expandable frame in the chat response. You can open them full-screen or copy the raw HTML source.

Knowledge Base (RAG)

The Knowledge Base lets you index your own documents so the AI can reference them during chat — without uploading documents to any server. Retrieval-Augmented Generation (RAG) runs entirely on your device.

Adding documents

  • Settings → Knowledge Base → click + Add document (up to 5 MB per file)
  • Or click the 📚 button in the chat input to attach and index a document in one step

How indexing works

  1. Document text is chunked into overlapping segments
  2. Each chunk is run through the detection pipeline — secrets are tokenized before any chunk touches disk
  3. Embeddings are computed on-device from the original (pre-sanitization) text for retrieval quality; only the resulting vectors are stored — not the raw text they were computed from
  4. Chunks and their embeddings are AES-256-GCM encrypted before being written to the local SQLite database

Retrieval during chat

When you send a message, the KB performs a semantic search (cosine similarity) against the chunk embeddings and prepends the top-k most relevant chunks to the prompt — sanitized, as usual. The AI answers using your private documents without those documents ever leaving your device.

Knowledge Base management (add, list, delete documents) is in Settings → Knowledge Base. Click × on any document to remove it and its chunks from the index.

Voice input

Dictate messages using an on-device Whisper speech-to-text model. Transcription runs entirely locally — no audio or transcript is ever sent over the network.

Setup

  1. Download a ggml-*.bin Whisper model from Hugging Face (ggerganov/whisper.cpp). The ggml-base.en.bin model (~142 MB) is a good starting point.
  2. In Settings → Voice Input, click Import model and select your downloaded .bin file
  3. Once imported, the microphone button (🎤) appears in the chat input

Recording

Click 🎤 to start recording; click again to stop. The transcript appears in the chat input as if you had typed it. It passes through the same sanitization pipeline as typed text — if you dictate an API key, it's tokenized before sending.

No Whisper model is bundled in the standard installer to keep the download size reasonable. The app never downloads a model automatically — you always choose which model to import.

Backup & restore

Create an encrypted backup of your settings and conversation history in Settings → Backup.

Creating a backup

  1. Enter a password (minimum 8 characters)
  2. Click Create backup
  3. Copy the backup text and store it securely (password manager, encrypted drive, etc.)

The backup is AES-encrypted using your password. It includes settings stored in local storage. Conversation history and Knowledge Base data are stored separately in encrypted SQLite databases — back those up by copying the database files from your app data directory if needed.

Restoring

  1. Go to Settings → Backup → Restore tab
  2. Paste the backup text and enter your password
  3. Click Restore — settings are applied immediately

Restoring overwrites current settings. API keys stored in the OS keychain are not included in the backup text — you will need to re-enter them after restoring.

Compliance Reports Pro / Enterprise

Generate de-identified audit exports of your Security Workspace findings for compliance, security audits, or SIEM ingestion. Reports contain statistical summaries and finding hashes — never raw secrets.

Export formats

FormatUse case
HTML (printable)Share with auditors, print to PDF for SOC 2 / ISO 27001 evidence
CSVImport into SIEM (Splunk, Elastic, etc.), spreadsheet analysis

Generating a report

  1. Go to Settings → Reports
  2. Select a date range (e.g. last 30 days, or a custom range for a specific audit period)
  3. Choose format (HTML or CSV)
  4. Click Export — the file is saved locally and opened immediately

What's included / excluded

  • Included: finding timestamps, rule IDs, category, risk score, file path, line number, AI verdict (confirmed / false_positive / needs_review), SHA-256 hash of the secret value
  • Excluded: raw secret values, decoded token content, any PII not directly part of a finding

Enterprise: Compliance reports can optionally be uploaded to the VaultMorph control plane for centralised audit trail across a team fleet. All uploads are de-identified — raw secrets never leave the device.

Changelog

v1.0.0-beta (July 2026) — current

  • Detection engine v2.1.0 — 127 rules across 10 categories (110 community, 17 pro-only)
  • New categories — India PII (PAN, Aadhaar, UPI, OTP), Financial (credit cards, IBAN), Infrastructure (private IPs, MAC addresses)
  • New API key patterns — NVIDIA NIM, Groq, xAI, Perplexity, Replicate, Resend, Razorpay, Fly.io, PlanetScale, Sentry, Slack/Discord Webhook URLs
  • Risk scoring — CVSS-inspired numeric score (0–100) with severity-based calculation and diminishing returns
  • Extended provider catalog — NVIDIA NIM, Groq, Mistral AI, Together AI, DeepSeek, Perplexity, OpenRouter (all with model lists)
  • AI Gateways — Portkey and Bifrost with gateway header support, virtual keys, and semantic caching
  • Projects — colour-coded conversation groups with collapsible sections, rename, and delete
  • Interchat context — type @ to inject context from any previous conversation
  • Conversation export — Markdown and plain text (all editions); PDF and JSON (Pro Trial / Enterprise)
  • System prompt — global custom system prompt via Settings → Advanced
  • Advanced parameters — temperature, Top P, and Max Tokens sliders for custom providers
  • Message management — delete individual messages, retry last turn
  • Attachment scanning — 30+ document formats scanned through detection pipeline before sending
  • Stop button — cancel in-flight AI requests mid-stream
  • Streaming restore — live response display with buffered token restoration on completion
  • Ed25519 rule pack signing — signed updates verified before applying
  • AES-256-GCM API key encryption — via OS keychain (Windows Credential Manager, macOS Keychain)
  • Zero telemetry — no usage data collected in any edition
  • Security Workspace — Gitleaks + Semgrep SAST, AI verdict review (confirmed / false_positive / needs_review), folder scan, remote repo scan with PAT vault, HTML/JSON export
  • MCP Servers — HTTP (loopback) and stdio (explicit consent gate, Windows cmd-shim resolution) transports
  • Subscription providers — Claude Code (Pro/Max plan, no API key needed; models: default/sonnet/opus/haiku); ChatGPT Codex CLI (coming soon)
  • Azure OpenAI — deployment-name routing, api-key header, default api-version 2024-10-01-preview
  • Artifacts — AI-generated HTML/JS rendered in sandboxed WebView with postMessage security protocol
  • Compliance reports — de-identified HTML and CSV audit export (no raw secrets), date range filter, SIEM-ready
  • Knowledge Base (RAG) — on-device chunking, on-device embeddings, AES-256-GCM encrypted SQLite storage
  • Voice input — local Whisper (ggml), fully offline, transcript sanitized before send
  • Browser extension — Chrome/Edge, ChatGPT/Claude/Gemini/Copilot, local-only processing
  • Document generation — Excel/Word/PPTX via structured DocGenSpec, no AI code execution
  • Remote repo scan — HTTPS+PAT clone, PAT vault (AES encrypted, masked on readback), branch/tag selection