Vise — User Manual
The complete guide to using Vise. For a 2-minute start, see the Getting Started; for activating a paid license see the activation steps. This manual covers every capability and how to use it.
Vise is a multi-language SAST (static application security testing) tool that runs fully offline — your source code never leaves your machine. The same engine runs in your IDE, a Desktop app, and the CLI; your edition sets the depth, not which tool.
Contents
- Surfaces & how they relate
- Editions — what each unlocks
- Installing & activating
- Running a scan
- Understanding findings
- Acting on findings
- AI configuration
- Reports & exports
- Custom rules
- CI/CD
- CLI reference
- Enterprise depth
- Privacy & offline guarantee
- Troubleshooting & FAQ
1. Surfaces & how they relate
12- 1The Vise panel — open it from the Vise icon in the Activity Bar (left edge). Findings are grouped by severity, down to each file:line.
- 2Right-click any finding → Explain · Fix with AI · Suppress.
| Surface | Best for | Notes |
|---|---|---|
| IDE extension (VS Code · JetBrains · Visual Studio) | as you code | Findings in a dedicated Vise panel, grouped by severity, with right-click actions. |
| Desktop app | deep audits & triage | Full-repo review, dashboard, batch fixes, branded reports. |
CLI (vise-scan) |
terminal & CI/CD | Same engine, scriptable, SARIF/SBOM output. |
One engine, one license per machine. The IDE extensions run the vise-scan engine under the
hood — but you just install the extension from your IDE's marketplace: on your first scan it
offers a one-click engine download (~50 MB, one-time, checksum-verified), then runs fully
offline. Already have the Desktop app or CLI? The extension reuses that engine automatically.
Everything is cross-platform — Windows, macOS and Linux (the Visual Studio extension is
Windows-only, because Visual Studio is).
2. Editions — what each unlocks
| Capability | Free | Pro | Enterprise |
|---|---|---|---|
| Engine depth | Basic (regex) | + AST (CWE/CVSS) | + cross-file taint |
| Languages | all | all | all |
| Secret / dependency-CVE / IaC / config scan | — | ✓ | ✓ |
| Explain a finding | ✓ | ✓ | ✓ |
| Fix with AI (per finding) | — | ✓ (local AI) | ✓ (+ cloud BYOK) |
| Quick Wins ranking (impact ÷ effort) | preview | ✓ | ✓ + AI-authored fixes |
| Reports | JSON, HTML | + compliance, remediation | + SARIF, SBOM, suppressions, Jira CSV |
| CI/CD pipeline (unlimited) | — | — | ✓ |
| API-security scan | — | — | ✓ |
| Custom rule packs | — | — | ✓ |
| Active machines | 1 | 3 | per seat |
Pricing: visesec.com/pricing. You pay for depth, not access — every surface is free to download and run at Basic depth.
3. Installing & activating
Everything is cross-platform (Windows · macOS · Linux, x64 & ARM64). Pick your surface:
| Surface | How to install | Platforms |
|---|---|---|
| IDE extension | Install from the marketplace (VS Code Marketplace · JetBrains Marketplace · the .vsix for Visual Studio). Nothing else to install — on your first scan the extension offers a one-click engine download (~50 MB, one-time, checksum-verified), then runs offline. |
VS Code & JetBrains: Win/macOS/Linux · Visual Studio: Windows |
| Desktop app | Run the installer for your OS (Windows .exe · macOS .dmg · Linux .AppImage). |
Win/macOS/Linux |
| CLI | A single self-contained binary — download it for your OS and put it on your PATH. |
Win/macOS/Linux |
Per-surface "where to find Vise after install" walkthroughs: Getting Started.
Activating Pro / Enterprise: buy on the pricing page → your key arrives by email. Fastest:
the success page + email have one-click Open in Vise Desktop / Open in VS Code buttons that
activate for you. Or enter the key once (Desktop Settings → License — it activates the moment
you paste; IDE license-key setting; or CLI --license-key). A one-time online activation binds
the key to your machine; after that, scans run offline, and the same activation covers all surfaces
on that machine (Desktop, IDE and CLI share it).
Prefer not to paste a key? You can sign in with your email instead: Desktop and the IDE
extensions have a Sign in with email action (CLI: vise-scan --login <you@email>) that emails you a
one-click link — open it and Vise activates without a key. Full flow + Enterprise seats/CI token:
the activation guide.
Find your Machine ID (needed for support / license moves): Desktop Settings → License ·
Vise: Show Machine ID (IDE) · vise-scan --machine-id (CLI).
4. Running a scan
123- 1Drop a project folder here — or pick a recent one just below.
- 2Click Scan.
- 3Read the Dashboard, then open Vulnerabilities to triage.
Desktop
Drop a project folder onto the window (or pick a Recent one) → Scan. Results land in the Dashboard + Vulnerabilities tabs.
IDE
- VS Code: Activity Bar → Vise icon → Findings panel; Command Palette → Vise: Scan Workspace (or right-click a folder).
- JetBrains: Tools → Vise → Scan Project (
Ctrl+Alt+Shift+S); results in the Vise tool window (bottom). - Visual Studio: Tools → Vise → Scan Solution; open the panel with Tools → Vise → Vise Panel.
CLI
vise-scan ./my-project --edition pro --format sarif --output report.sarif
Scan scope & modes
- Languages — limit with
--languages csharp,typescript(Desktop: Scan Settings). Empty = all. - Exclude —
--exclude "**/test/**,**/vendor/**". Vendored libs (node_modules,vendor,bin, minified bundles, embedded frameworks) are skipped automatically. - Application vs Library mode — Vise auto-detects whether the root is an application (fires app-tier rules like IDOR, rate-limiting) or a framework/library (suppresses app-tier rules to cut false positives). Override in Scan Settings.
- Incremental (Enterprise) —
--changed-onlyscans only files changed in the working tree;--since origin/mainscans only files changed since a ref (the PR-gate mode). Both need a git repo and turn a full scan into a seconds-long one.
5. Understanding findings
123- 1Pick a finding — severity, OWASP / CWE / CVSS and the risk explained.
- 2Hit Get Fix (or Ask AI) for an AI-written fix.
- 3Export when done — SARIF / SBOM / Jira CSV…
Each finding carries: severity (Critical / High / Medium / Low / Info), the OWASP Top 10
category, CWE id, a CVSS score, the file:line, a code snippet, and a recommended fix.
- Grouping — identical findings fold into one "message ×N" row you expand to each
file:line(including cross-file taint paths). - Desktop tabs — Dashboard (severity donut + OWASP-category split + file counts), Vulnerabilities (filterable list), Trends (history across scans).
- IDE — the Vise panel groups by severity; Critical/High open, the rest collapsed.
6. Acting on findings

Right-click a finding (IDE) or use the per-finding row (Desktop):
- Explain (all tiers) — what the issue is, why it's risky, how to fix, with OWASP/CWE links.
- Fix with AI (Pro+) — generates a fix. In the IDE it routes to your editor's AI (VS Code Language Model / Copilot Chat) — Vise ships zero in-editor AI; in the Desktop it uses the built-in local model (or cloud BYOK on Enterprise).
- Copy as AI prompt — a paste-ready prompt for any chat.
- Suppress — two kinds:
- Inline — adds a
vise-ignorecomment on the line (language-aware); that finding is skipped on future scans. - Persistent — Desktop suppressions you can export as
.suppressions.json(Enterprise) and commit to the repo so the whole team shares them.
- Inline — adds a
- Quick Wins — ranks findings by impact ÷ effort (biggest risk, least work, first). Pro gets the prioritized list; Enterprise adds an AI-authored fix per item into a polished report.
7. AI configuration
Vise's AI is opt-in and used only for Explain / Fix — never for detection (detection is deterministic static analysis). Three backends:
| Backend | Tier | How |
|---|---|---|
| Embedded (local model) | Pro+ | A local GGUF model runs on CPU (no GPU, no API key, fully offline). Load a model via Settings → AI (*.gguf). Shown as "Embedded AI". |
| Ollama (local server) | Pro+ | Point Vise at a local Ollama endpoint (default model codellama). |
| Cloud BYOK | Enterprise | Bring your own OpenAI / Anthropic / Gemini key. Off by default; the only path where text leaves the machine, and only with your explicit key. |
The IDE path is different: Fix/Explain use your editor's own AI (Copilot) — Vise adds no model there. Configure all of this in Settings → AI (Desktop) / the footer "Click the gear to configure AI".
8. Reports & exports
Desktop Export (top-right), tiered by format:
| Format | Tier | Use |
|---|---|---|
| JSON | Free | machine-readable findings |
| HTML | Free | readable report |
Compliance HTML (.compliance.html) |
Pro | audit/compliance summary |
Remediation HTML (.remediation.html) |
Pro | fix-oriented report |
SARIF (.sarif) |
Enterprise | GitHub Code Scanning / VS / CI |
SBOM — CycloneDX (.cdx.json) / SPDX (.spdx.json) |
Enterprise | dependency inventory |
Suppressions (.suppressions.json) |
Enterprise | share team suppressions |
Jira / issue-tracker CSV (.csv) |
Enterprise | one finding = one importable issue |
CLI output is --format sarif | json | text (repeat --format for multiple).
Jira CSV import: Jira → External System Import → CSV (admin). Columns map to Summary / Issue
Type / Priority / Description / Labels / Component; the External ID column (ruleId|file|line)
lets a re-import update issues instead of duplicating. Direct API push is on the roadmap.
9. Custom rules (Enterprise)
Author your own detections as JSON or YAML rule packs and load them:
vise-scan . --edition enterprise --custom-rules ./my-rules.json
vise-scan . --edition enterprise --custom-rules https://rules.acme.com/v2.json # HTTPS only
vise-scan --validate-rules ./my-rules.json # CI pre-flight, no scan
Repeat --custom-rules to combine sources (file, directory, or HTTPS URL — 1 MB cap, HTTPS-only).
Schema + examples: visesec.com/docs.
10. CI/CD (Enterprise)
The vise-scan CLI is a single, self-contained binary (Linux · macOS · Windows) — no runtime
to install. CI runs require Enterprise and a machine-unbound VISE_CI_TOKEN (issued for your Enterprise
account — reply to your license email or contact support to get one) — not your seat key, which is
bound to one machine. Store the token as a CI secret; every recipe reads it from the environment so it
never appears on the command line.
GitHub Actions, in one step (download + checksum + scan + gate + SARIF upload are handled for you):
- uses: visesec/vise-action@v1
with:
path: .
ci-token: ${{ secrets.VISE_CI_TOKEN }}
min-severity: medium
upload-sarif: true
Prefer a raw runner? The canonical snippet pins a version and verifies the published
SHA256SUMS before running the binary — never pipe an unverified binary into a pipeline.
Gate the pipeline on exit code ≥ 2 (Critical/High found). CI scans are unlimited and don't consume seats. Full cross-platform recipes — GitHub Actions, GitLab CI, Azure DevOps, Jenkins, Bitbucket, Docker, plus SARIF integration and best practices — are on the website at visesec.com/ci-cd.
11. CLI reference
vise-scan <path> [options]
| Option | Description |
|---|---|
--edition <basic|pro|ent> |
Scan edition (default: basic) |
--format <sarif|json|text> |
Output format (repeat for multiple; default: sarif) |
--output, -o <path> |
Output file (default: vise-report.{format}) |
--languages <list> |
Comma-separated filter (csharp,java,kotlin,python,php,javascript,typescript,ruby,go,rust,cpp,scala,perl,groovy,lua,swift,android,ios,dart) |
--exclude <globs> |
Comma-separated glob patterns to skip |
--min-severity <level> |
info / low / medium / high / critical |
--changed-only |
Incremental: only files changed in the working tree (git) |
--since <ref> |
Incremental: only files changed since a ref (PR gate) |
--baseline <path> |
Compare against a baseline report (delta) |
--license-key <key> |
Pro/Enterprise key (or VISE_LICENSE_KEY env) |
--login <email> |
Email a one-click sign-in link to activate without a key; add --license-key to claim an Enterprise seat |
--auth-verify <token> |
Complete sign-in with the token from that email |
--machine-id |
Print the machine ID and exit |
--custom-rules <path> |
Load custom rule pack (Enterprise; file/dir/HTTPS, repeatable) |
--validate-rules <path> |
Validate a rule pack and exit (no scan) |
--no-secrets / --no-deps / --no-config / --no-iac |
Disable a Pro+ scan stage |
--no-live-cve / --nvd-api-key <key> |
Live CVE lookup controls |
--url <url> |
Target URL for dynamic analysis |
--max-vulns <n> |
Cap findings (default 10000) |
--quiet, -q · --version, -v · --help, -h |
— |
Exit codes: 0 clean · 1 medium/low/info found · 2 critical/high found (CI fail) ·
3 invalid arguments · 4 license failed · 5 scan error · 6 cancelled. CI auth in a CI
context uses VISE_CI_TOKEN (Enterprise), not --license-key.
12. Enterprise depth — "semantic analysis"
The Enterprise tier adds cross-file taint (dataflow) analysis: it traces user input from a source (request parameter, body, header…) across functions/files to a dangerous sink (SQL, command, path, XSS…), and clears the finding when a sanitizer is on the path. It's sanitizer- and framework-aware (built-in models for Spring, Django, Express, Laravel, ASP.NET Core), with semantic confidence scoring.
Measured on the industry-standard OWASP Benchmark 1.2 (Java): F1 72.1% (Pro) / 71.3% (Enterprise, max-recall) — leading every open-source SAST that publishes on that corpus (Semgrep OSS 52%, SonarQube 44%, FindSecBugs 65%). It needs no build step (scans source directly). Full numbers and methodology: visesec.com/docs.
Also Enterprise: API-security scanning and AI-authored Quick Wins.
Team management. The license owner can add or remove members, choose which email domains may claim seats, and free seats at visesec.com/team — sign in with the email that made the purchase (a one-time link is emailed; no shared key involved).
13. Privacy & offline guarantee
- Local-first. Scanning runs entirely on your machine. No telemetry, no code upload, no account required to start.
- The only network calls are: the one-time license activation + periodic license refresh
(no code, just the key + machine id), optional live CVE lookup (package names only —
disable with
--no-live-cve), and — only if you turn it on — cloud AI BYOK with your own key. Everything else stays offline. - IDE Fix/Explain use your editor's AI (Copilot) — Vise sends nothing itself.
14. Troubleshooting & FAQ
| Symptom | Fix |
|---|---|
| "Vise CLI not found" (IDE) | On the first scan the extension offers a one-click engine download — accept it (~50 MB, one-time). If you're offline / air-gapped, install the Desktop app or CLI, or set the extension's CLI-path setting. |
| Entered a key but still Basic | Activation runs automatically when you enter the key while online (it mints the license token). If you were offline, reconnect and re-enter the key / re-scan. See visesec.com/activate. |
| "not generated for this machine" | The key is bound to a different machine. Activate on the right one, or email support to move it. |
| CI fails with exit 4 (license) | CI needs Enterprise + VISE_CI_TOKEN — not --license-key. |
| Too many false positives on a framework | Confirm it's scanned in Application mode only for your code; exclude vendored/library paths; use vise-ignore / suppressions. |
| Scan is slow on a big repo | Use --changed-only / --since (Enterprise), or --languages to narrow scope. |
Questions: support@visesec.com · docs: visesec.com/docs.