All Settings
All settings are under the devManager.* namespace.
Edit via:
Ctrl+,→ search@ext:vaulttec-dev.snakeflow-dev-manager- Or edit
.vscode/settings.jsondirectly (workspace-level, per-project)
Note: the Quality Hub registers 90+ providers and exposes hundreds of per-provider settings (
devManager.quality.<providerId>.*). The tables below show representative examples per category. The complete, always-up-to-date list lives in the extension’spackage.jsoncontributes.configurationsection — open Settings UI and searchdevManager.quality.to browse every key with descriptions inline.
Project
| Setting | Type | Default | Description |
|---|---|---|---|
devManager.project.name | string | auto | Project identifier |
devManager.project.dir | string | auto | Absolute path to project root |
devManager.project.packageManager | enum | "auto" | auto | npm | pnpm | yarn | bun |
devManager.project.servers | array | [] | Dev server configurations |
devManager.project.composePath | string | "" | Docker Compose file path (empty = auto-detect) |
devManager.project.containerActions | array | auto | Container action menu |
Git & GitHub
| Setting | Type | Default | Description |
|---|---|---|---|
devManager.git.defaultBranch | string | "main" | Default branch name fallback |
devManager.git.protectedBranches | string[] | ["main","master","develop","staging","production"] | Branches requiring confirmation to delete |
devManager.github.defaultMilestone | string | "" | Default milestone for new issues |
devManager.prToChat.prompt | string | "" | Custom prompt when sending PR to Chat |
devManager.issueToChat.prompt | string | "" | Custom prompt when sending Issue to Chat |
SnakeFlow Cloud
| Setting | Type | Default | Description |
|---|---|---|---|
devManager.cloud.apiUrl | string | https://snakeflow.pages.dev | Base URL of the cloud sync service (HTTPS). Change only if you use a self-hosted endpoint. |
See Cloud settings sync → for commands and privacy notes.
Team Tracker
| Setting | Type | Default | Description |
|---|---|---|---|
devManager.team.enabled | boolean | false | When true, records active minutes per UTC day and sends them to the team API after login. |
devManager.team.idleWindowMinutes | number | 5 | Declared idle window (1–15). Changing it restarts Team Tracker. While you belong to at least one workspace, the collector actually uses the minimum of each workspace’s server-side idle_window_minutes (admin setting on the team API). With zero memberships, the built-in default is 5 minutes until you join a workspace. |
devManager.team.useActivityWatch | boolean | true | Use local ActivityWatch for OS-wide mouse/keyboard signals. |
devManager.team.requireActivityWatch | boolean | true | Hard gate: no minutes counted unless ActivityWatch is reachable. |
devManager.team.activityWatchUrl | string | http://localhost:5600 | Base URL of the local aw-server REST API. |
devManager.team.requireTracking | boolean | false | When true, shows a warning if tracking is off and the developer has not started a session. |
devManager.team.idleSleepWindow | string | "" | Local-time HH:MM-HH:MM interval in which the collector forces IDLE regardless of other signals. Empty = disabled. See Team Tracker — Sleep window. |
Per-workspace app allowlist (regexes against ActivityWatch window app / title) is not a devManager.* setting — workspace admins configure it on the server (Cloud Team tab or SnakeFlow: Team Tracker — Edit App Allowlist). See Team Tracker → for dual-factor activity rules, the sleep window, the status-bar toggle, ActivityWatch, internal/external rules, and the activity log.
Docker & CI
| Setting | Type | Default | Description |
|---|---|---|---|
devManager.docker.composeCommand | string | "docker compose" | Compose CLI (docker compose / docker-compose / podman compose) |
devManager.ci.workflowsPath | string | ".github/workflows" | Path to GitHub Actions workflows |
AI (Gemini + Dictation)
| Setting | Type | Default | Description |
|---|---|---|---|
devManager.gemini.apiKey | string | "" | Google Gemini API key for AI title generation and voice dictation |
devManager.gemini.model | string | "gemini-2.5-flash" | Gemini model name |
devManager.gemini.dictationLanguage | enum | "auto" | Spoken language for voice dictation transcription. auto = Gemini detects automatically. Other values: uk, en, de, fr, es, pl, it, pt, nl, cs, ja, zh, ko |
See Voice Dictation → for full details.
Quality Hub — General
| Setting | Type | Default | Description |
|---|---|---|---|
devManager.quality.customChecks | array | [] | Custom project-level quality checks |
devManager.quality.skipDirs | string[] | [] | Extra directory names (not globs) merged into built-in exclusions for walking checks |
devManager.quality.skipFiles | string[] | [] | Relative paths from project root (forward slashes), optional *.vsix / **/*.vsix, or **/file.ext patterns — excludes files from many built-ins and Semgrep aggregation |
devManager.quality.timeout | number | 30 | Max runtime per check in minutes |
devManager.quality.maxBuffer | number | 50 | Max stdout buffer in MB |
devManager.quality.chatReport | enum | "onFail" | auto | onFail | manual | never — when to open AI chat with the quality report after a run |
devManager.quality.chatPrompt | string | "" | Optional text prepended when sending the report to Chat |
Quality Hub — Cloud Providers
Every cloud integration uses devManager.quality.<id>.enabled (most default to off; CodeQL defaults to on). Required keys differ per service — there is no single token field for all.
Authoritative per-provider list: Cloud Providers → (settings tables, prerequisites, and behavior).
IDs registered in settings (subset ships as documented cloud checks): sonarcloud, snyk, codecov, coveralls, codeclimate, codacy, deepsource, coderabbit, qodo, greptile, cubic, codeant, qlty, codeql, aikido, socket, … — search devManager.quality. in Settings for the full list.
Examples (see cloud docs for full keys):
"devManager.quality.sonarcloud.enabled": true,"devManager.quality.sonarcloud.token": "","devManager.quality.sonarcloud.projectKey": "","devManager.quality.sonarcloud.serverUrl": "https://sonarcloud.io",
"devManager.quality.snyk.token": "","devManager.quality.snyk.orgId": "",
"devManager.quality.coderabbit.enabled": true,"devManager.quality.coderabbit.apiKey": ""Quality Hub — Built-in Checks
Replace <check> with the check name. All checks share these common settings:
| Setting | Type | Default |
|---|---|---|
devManager.quality.builtin.<check>.enabled | boolean | true |
Check-specific thresholds:
"devManager.quality.builtin.lineCount.warnLines": 300,"devManager.quality.builtin.lineCount.failLines": 500,
"devManager.quality.builtin.functionLength.warnLines": 40,"devManager.quality.builtin.functionLength.failLines": 80,
"devManager.quality.builtin.complexity.warnScore": 10,"devManager.quality.builtin.complexity.failScore": 20,
"devManager.quality.builtin.fileSize.warnKb": 50,"devManager.quality.builtin.fileSize.failKb": 200,
"devManager.quality.builtin.importDepth.warnDepth": 4,"devManager.quality.builtin.importDepth.failDepth": 6,
"devManager.quality.builtin.dependencyCount.warnAt": 50,"devManager.quality.builtin.dependencyCount.failAt": 100,
"devManager.quality.builtin.parameterCount.warnAt": 4,"devManager.quality.builtin.parameterCount.failAt": 7,
"devManager.quality.builtin.jscpd.threshold": 5,"devManager.quality.builtin.jscpd.minLines": 5,
"devManager.quality.builtin.trivy.failOnSeverity": "HIGH","devManager.quality.builtin.trivy.warnOnSeverity": "MEDIUM","devManager.quality.builtin.trivy.path": "trivy",
"devManager.quality.builtin.golangciLint.warnAt": 5,"devManager.quality.builtin.golangciLint.failAt": 20,"devManager.quality.builtin.golangciLint.path": "golangci-lint",
"devManager.quality.builtin.bandit.path": "bandit","devManager.quality.builtin.bearer.path": "bearer",
"devManager.quality.builtin.returnTypes.warnAt": 10,"devManager.quality.builtin.returnTypes.failAt": 50,
"devManager.quality.builtin.noManualMigrations.enabled": true,"devManager.quality.builtin.noManualMigrations.severity": "error","devManager.quality.builtin.noManualMigrations.adapters": ["drizzle", "prisma", "atlas"],"devManager.quality.builtin.noManualMigrations.checkRemoved": true,"devManager.quality.builtin.noManualMigrations.gitLookback": 50,
"devManager.quality.builtin.prismaMigrateStatus.realtime": true,
"devManager.quality.builtin.squawk.dataRisk": "warn","devManager.quality.builtin.squawk.requireDownMigration": false,
"devManager.quality.builtin.migrationsCiGate.enabled": true,
"devManager.quality.semgrep.config": "auto"All available built-in check names:
lineCount · functionLength · complexity · fileSize · longLines · importDepth · directoryDepth · dependencyCount · todoCount · commentedCode · duplicateFiles · testRatio · mixedIndent · encoding · secretLeaks · debugLeaks · gitignoreCheck · magicNumbers · parameterCount · barrelFiles · couplingMetrics · crossLayerImports · componentInventory · heavyImports · anyCoverage · jsdocCoverage · lcovCoverage · actionsAudit · emptyTests · jscpd · knip · dependencyCruiser · pkgAudit · outdatedDeps · licenseCheck · hadolint · shellcheck · golangciLint · bearer · stryker · trivy · bandit · semgrep · act · envConsistency · lockfileSync · nodeVersionConsistency · readmeCheck · changelogCheck · codeownersCheck · tscCheck · asyncAwaitMisuse · errorHandling · returnTypes · reactHookRules · a11yCheck · yamllint · spectral · checkov · sqlfluff · markdownlint · attw · publint · lockfileLint · npmProvenance · syncpack · manypkg · scorecard · typeCoverage · commitlint · noFocusedTests · noManualMigrations · migrationsCiGate · stylelint · prettierCheck · sizeLimit · lighthouseCi · oasdiff · graphqlInspector · bufBreaking · dockle · grype · dive · hardenRunnerAudit · sbom · sentrySourcemaps · trojanSource · rlsCheck · pgtapPresence · sqruff · vale · alex · lychee · promptfoo · dotenvLinter
Quality profile —
devManager.quality.profile(strict|balanced|vibe, defaultstrict) controls which checks run by default.strict= Google/Meta bar (everything on, warn → fail).balanced= same enablement, warns stay warns.vibe= only STRONG cloud + CLI tooling on by default. Per-providerenabledsettings always win. SeedevManager.quality.warnAsFailfor the warn-promotion overlay.
Realtime Quality
Optional in-editor re-runs for providers that define realtime hooks (ESLint, Biome, on-save formatters, migration hygiene, etc.).
| Setting | Type | Default | Description |
|---|---|---|---|
devManager.realtime.enabled | boolean | true | Master switch — when false, no realtime subscriptions run. |
devManager.realtime.onType.enabled | boolean | true | Re-run on keystrokes (where a provider subscribes to onType). |
devManager.realtime.onSave.enabled | boolean | true | Re-run on save. |
devManager.realtime.precommit.mode | enum | "warn" | off | warn | block — how to react when staged files have SnakeFlow error-level diagnostics. block is enforced when you run SnakeFlow: Pre-commit Gate (devManager.realtime.precommitGate) or wire that command into a git hook. |
devManager.realtime.precommit.migrationsMode | enum | "warn" | off | warn | block-strict — extra policy for staged migration paths (prisma/migrations/, drizzle/, etc.). block-strict treats any SnakeFlow diagnostic on those files (including warnings) as blocking for the pre-commit gate. When set to block-strict, SnakeFlow may warn once if core.hooksPath points away from .git/hooks (hooks might not run). |
No Manual Migrations, Prisma Migrate Status (watch), and similar checks can publish editor diagnostics when migration or schema files change, as long as the check and realtime are enabled. See No Manual Migrations →.
Pre-commit Gate: Orphan Migrations
devManager.realtime.precommit.scanners.orphanMigrations (default true) blocks commits that stage a .sql file inside a Drizzle migrations/ directory whose tag is not present in meta/_journal.json. Catches hand-written migrations bypassing drizzle-kit generate. Runs both in the VS Code Source Control gate and the auto-installed .git/hooks/pre-commit shim.
Pre-commit Gate: Send failures to chat
devManager.realtime.precommit.sendFailToChat (default true) — when the gate blocks a commit (either from the VS Code Source Control panel or from the terminal via the auto-installed .git/hooks/pre-commit), SnakeFlow automatically opens the current AI chat panel and pastes the list of blocking issues. The AI can then suggest a fix inline.
The raw report is stored in .snakeflow/last-precommit-fail.json (gitignored). Disable this setting to stop the automatic chat dispatch while keeping all other gate behaviour intact.
Pre-commit Gate: Staged-only scanning
The gate scans the post-commit state of the working tree — exactly what would land in HEAD after the pending commit. Before any scanner runs, SnakeFlow hides every unstaged change (tracked diffs and untracked files) by snapshotting them as a binary patch, then restores them after fn returns. This mirrors what lint-staged does and prevents the most common pre-commit blind spot:
You fix a bug locally and stage an unrelated change with
git add -p. The fix stays unstaged.vitest/knip/tscsee the fix in the working tree and pass — but the broken file ships toHEAD.
With staged-only scanning, command-style custom checks see the same files git is about to commit. The fast-path skips this entirely when there are no unstaged changes (95% of commits → zero overhead). Mid-merge / rebase / cherry-pick states are detected and left untouched. If the auto-restore ever fails (rare — concurrent disk writes, etc.) the unstaged delta is saved to .snakeflow/precommit-restore-<ts>.patch with the exact git apply command to recover it.
Pre-commit Gate: Custom Checks
devManager.realtime.precommit.customChecks lets the team add ad-hoc checks executed alongside the built-ins. Two kinds:
kind: "pattern"— JavaScript regex applied to staged diff additions (scope: "diff", default) or full file content (scope: "file"). Filtered byfilePatternglob (default**).kind: "command"— shell command executed at repo root. Non-zero exit code = failure. Per-check timeout viadevManager.realtime.precommit.customCheckTimeoutMs(default 30000 ms). Runs against the staged-only working tree (see above).
Each check defines id (stable identifier), optional label, and severity ("error" blocks the commit, "warn" is informational). Settings live in .vscode/settings.json so the entire team picks them up via git pull.
"devManager.realtime.precommit.customChecks": [ { "id": "no-todo", "label": "No TODO/FIXME", "kind": "pattern", "pattern": "TODO|FIXME", "filePattern": "src/**/*.{ts,tsx}", "scope": "diff", "severity": "error" }, { "id": "run-tests", "label": "Unit tests", "kind": "command", "command": "npm test --silent", "severity": "error" }]Per-check scope: Hub / Realtime / Pre-commit
Every quality provider has three independent toggles. You can mix them freely — for example, keep a check visible in Quality Hub but disable its live squiggles, or gate commits on a subset of checks only.
| Toggle | Setting key pattern | Default | Effect |
|---|---|---|---|
| Hub (Quality Hub run) | devManager.quality.builtin.<id>.enabled | true (builtin), false (cloud) | Includes or excludes the check from Ctrl+Alt+F batch runs |
| Realtime (live diagnostics) | devManager.quality.builtin.<id>.realtime | true | Enables on-type / on-save squiggles in the editor |
| Pre-commit (git gate) | devManager.quality.builtin.<id>.precommit | false | Blocks the commit when this check finds errors on staged files |
The same three keys exist for cloud providers under devManager.quality.<id>.*.
Example: tight pre-commit policy
Enable ESLint and Prettier to block commits, but keep live squiggles only for ESLint to avoid noise from Prettier on every keystroke:
{ "devManager.quality.builtin.eslint.precommit": true, "devManager.quality.builtin.prettierCheck.precommit": true, "devManager.quality.builtin.prettierCheck.realtime": false}How pre-commit scope works
When devManager.realtime.precommit.mode is block (default), SnakeFlow collects all VS Code diagnostics emitted by enabled realtime providers on the staged files. Only providers whose .precommit toggle is true contribute to the error count. The seven legacy scanners (secrets, envFiles, focusedTests, dangerousPatterns, lockfileDrift, schemaDrift, orphanMigrations) are controlled by their own devManager.realtime.precommit.scanners.* keys and always contribute regardless of the per-provider .precommit flag.
Workflows
AI-powered workflow automation that runs multi-step checks, visual regression, and coverage gating.
| Setting | Type | Default | Description |
|---|---|---|---|
devManager.workflows.anthropicApiKey | string | "" | Anthropic API key for AI workflow steps |
devManager.workflows.claudeModel | string | "sonnet" | Claude model used in AI steps (fetched live from API) |
devManager.workflows.timeoutMinutes | number | 60 | Max minutes per workflow run (0 = unlimited) |
devManager.workflows.minCoverage | number | 80 | Minimum test coverage % required to pass |
devManager.workflows.maxCostUsd | number | 5 | Max AI spend in USD per run before abort |
devManager.workflows.visualTolerance | number | 0.1 | Pixel-diff % allowed before visual regression is flagged |
devManager.workflows.runsPerWorkflow | number | 1 | How many times each workflow runs per trigger |
devManager.workflows.watchdogSeconds | number | 90 | Seconds of silence before a step is considered hung |
devManager.workflows.maxChangedFiles | number | 50 | Max files a workflow may change before aborting |
devManager.workflows.parallelRoles | boolean | false | Run multi-role steps in parallel |
devManager.workflows.isolateDatabase | boolean | true | Use isolated DB copy per run |
devManager.workflows.viewports.mobile | boolean | true | Include mobile viewport in visual/Lighthouse checks |
devManager.workflows.viewports.tablet | boolean | false | Include tablet viewport |
devManager.workflows.viewports.desktop | boolean | true | Include desktop viewport |
devManager.workflows.lighthouseMin | object | {performance:70,seo:80} | Minimum Lighthouse scores (0–100) |
devManager.workflows.useApiKey | boolean | false | Authenticate workflow requests with API key |
devManager.workflows.testAccounts | array | [] | Test accounts for workflows to sign in as |
devManager.workflows.custom | array | [] | Custom workflow definitions |
Wake Lock
Prevents the machine from sleeping during editor activity and optionally during Quality Hub runs. This is independent of Team Tracker → minute counting — see Wake Lock feature guide →.
| Setting | Type | Default | Description |
|---|---|---|---|
devManager.wakeLock.enabled | boolean | true | Master switch. When false, both the status-bar activity tracker and Quality Hub auto-acquire are no-ops. |
devManager.wakeLock.autoActivate | boolean | true | While enabled, automatically acquire a wake lock for the duration of each Quality Hub full run (acquire('Quality Hub')), independent of the status-bar toggle. |
devManager.wakeLock.keepDisplayAwake | boolean | true | Keep the display on, not just prevent system sleep (ES_DISPLAY_REQUIRED on Windows; display blanking may still apply on some Linux setups). |
devManager.wakeLock.idleThresholdSeconds | number | 120 | With the status-bar toggle ON, seconds without any activity signal before the activity lock is released (long-running tasks alone do not pin the lock). |
devManager.wakeLock.readyTimeoutMs | number | 0 | Milliseconds to wait for the OS helper to report ready (0 = platform default). |
devManager.wakeLock.startRetries | number | 2 | Retries if the helper fails to start. |
devManager.wakeLock.maxHoldHours | number | 4 | If refCount stays above zero continuously for this many hours, log a warning and optionally show a notification (0 disables). Does not force-release. |
devManager.wakeLock.persistLog | boolean | false | Append Wake Lock output lines to <workspace>/.vscode/snakeflow-wakelock.log or <workspace>/.cursor/snakeflow-wakelock.log (1 MB rotation). Requires an open workspace folder. |
Commands: SnakeFlow: Wake Lock — Toggle / SnakeFlow: Wake Lock — Diagnose (see Command palette →).
Agent Context
AI coding agent context management and automated documentation updates.
| Setting | Type | Default | Description |
|---|---|---|---|
devManager.agentContext.structureSync.enabled | boolean | true | Auto-generate project-structure snapshot for AI context |
devManager.agentContext.structureSync.autoSync | boolean | true | Re-sync snapshot when files change |
devManager.docUpdater.commitCount | number | 20 | Recent commits analysed when auto-updating docs |
devManager.docUpdater.files | array | [] | Documentation files to keep up to date (path + prompt) |
devManager.github.defaultMilestone | string | "" | Default GitHub milestone for AI-created issues and PRs |
devManager.prToChat.prompt | string | "" | Prompt prepended when sending PR diff to AI chat |
devManager.issueToChat.prompt | string | "" | Prompt prepended when sending GitHub issue to AI chat |
See also
- Wake Lock → — activity signals, Quality Hub stacking, diagnostics
- Team Tracker → — dual-factor activity, sleep window, ActivityWatch, internal vs external
- Command palette reference → — every SnakeFlow: command title
- CLI tools installation → — external binaries Quality Hub may call