---
title: "Settings and policies"
---

# Settings and policies

Reference of the Neural Inverse settings and managed policies the Editor reads, with defaults, who may set each one, and how managed policy is delivered on Windows, macOS and Linux.

Settings work as in Code - OSS. Settings specific to Neural Inverse start with `neuralInverse.`. Many of them are also managed policies, which your administrator sets for every device; several can only be set that way.

## How managed policy is set

| Platform | How |
|---|---|
| Windows | Group Policy, with ADMX and ADML templates generated from the product (categories include Governance, Audit and Security), or the product's policy key in the registry |
| macOS | A configuration profile (`.mobileconfig`) for the product's bundle identifier (`com.neuralinverse.ide` for the Editor, `com.neuralinverse.agents` for the Agents app) |
| Linux | The JSON policy file `/etc/vscode/policy.json`. Governance trusts it only when it is owned by root and not writable by others. |

For testing, `npm run mock-policy-server` in the source serves policies to a development build.

## Who may set what

- **Managed policy only**: a value in a settings file (user, workspace or folder) is ignored, and the app tells you. This applies to every `neuralInverse.governance.*`, `neuralInverse.audit.*` and `neuralInverse.security.*` setting, `neuralInverse.vault.agentEnvironment`, `neuralInverse.keystone.clientId`, `neuralInverse.keystone.allowMissingIssuerParameter` and `neuralInverse.keystone.workspaceBindingPolicy`, and to the always-governed settings `neuralInverse.checks.enabled`, `security.workspace.trust.enabled`, `security.workspace.trust.untrustedFiles`, `security.restrictUNCAccess` and `extensions.verifySignature`. Under an organisation policy, also to the agent auto-approval settings and anything the policy lists.
- **Application settings**: a workspace cannot set them, only your user settings or managed policy. All `neuralInverse.keystone.*` and `neuralInverse.context.*` settings are application settings.
- **Everything else**: as in Code - OSS.

## Sign-in and server

| Setting | Policy | Default | Meaning |
|---|---|---|---|
| `neuralInverse.keystone.baseUrl` | `NeuralInverseKeystoneBaseUrl` | empty (the address built into the app) | The Govern deployment to sign in to. Ignored in a build that locks the address. |
| `neuralInverse.keystone.clientId` | `NeuralInverseKeystoneClientId` | empty | Policy only. The OAuth client, only for a self-hosted deployment older than the per-app clients. |
| `neuralInverse.keystone.allowMissingIssuerParameter` | `NeuralInverseKeystoneAllowMissingIss` | `false` | Policy only. Allows an older self-hosted server that does not send `iss` (RFC 9207), only when the address also comes from policy. |
| `neuralInverse.keystone.workspaceBindingPolicy` | `NeuralInverseKeystoneWorkspaceBindingPolicy` | empty | Policy only. Pins or forbids repositories. See [Workspaces](https://neuralinverse.com/docs/editor/workspaces/#for-administrators-pin-or-forbid-repositories). |

## Governance

| Setting | Policy | Meaning |
|---|---|---|
| `neuralInverse.governance.policyBundle` | `NeuralInverseGovernancePolicyBundle` | The signed policy bundle (JSON), the strongest policy source |
| `neuralInverse.governance.policyKeys` | `NeuralInverseGovernancePolicyKeys` | JSON array of trusted policy signing keys, for example `[{"keyId":"acme-2026","publicKey":"<base64>","orgIds":["acme-medical"]}]`. Adds to the product's keys; never replaces one. |
| `neuralInverse.governance.organisation` | `NeuralInverseGovernanceOrganisation` | Your organisation id, so a bundle signed for another organisation is refused |

All three are policy only.

## Audit

Setting ids start with `neuralInverse.audit.`; policy names start with `NeuralInverseAudit`. An install is managed as soon as one audit policy is set; unset keys then take the managed default.

| Setting | Policy | Unmanaged default | Managed default | Meaning |
|---|---|---|---|---|
| `enabled` | `NeuralInverseAuditEnabled` | `true` | `true` | Record actions. Managed installs always record. |
| `cli.enabled` | `NeuralInverseAuditCliEnabled` | `true` | `true` | Record command-line tool invocations |
| `extensions.processAndNetwork` | `NeuralInverseAuditExtensionsProcessAndNetwork` | `true` | `true` | Record processes extensions start and hosts they first contact |
| `captureLevel` | `NeuralInverseAuditCaptureLevel` | `standard` | `standard` | `minimal`, `standard` or `full` (full by policy only) |
| `failureMode` | `NeuralInverseAuditFailureMode` | `alert` | `block` | What happens when the ledger cannot record |
| `retentionDays` | `NeuralInverseAuditRetentionDays` | 90 | 365 | Days to keep events, or per data class `{ public, internal, confidential, restricted }` |
| `legalHold` | `NeuralInverseAuditLegalHold` | `false` | `false` | Suspend erasure and retention deletion |
| `maxDiskMiB` | `NeuralInverseAuditMaxDiskMiB` | 1024 | 4096 | Disk space for the ledger (at least 16) |
| `exclusions` | `NeuralInverseAuditExclusions` | `[]` | `[]` | Workspace-relative globs never recorded |
| `userExclusionsAllowed` | `NeuralInverseAuditUserExclusionsAllowed` | `true` | `false` | Whether a person's exclusions also apply |
| `securitySettingsAllowList` | `NeuralInverseAuditSecuritySettingsAllowList` | `[]` | `[]` | More settings whose old and new values are recorded |
| `checkpointEvery` | `NeuralInverseAuditCheckpointEvery` | 1000 events / 300 s | 1000 / 300 | Signed checkpoint frequency |
| `tsaUrl` | `NeuralInverseAuditTsaUrl` | empty | empty | RFC 3161 time-stamp authority for checkpoints. Empty means no network call. |
| `userErasureAllowed` | `NeuralInverseAuditUserErasureAllowed` | `true` | `false` | Whether a person may erase their own recorded content |
| `pseudonymiseExports` | `NeuralInverseAuditPseudonymiseExports` | `false` | `true` | Pseudonyms instead of identities in exports |
| `clipboardThreshold` | `NeuralInverseAuditClipboardThreshold` | 1024 | 1024 | Pastes larger than this many characters are recorded (size and digest only) |
| `evidence.allowedBuilders` | `NeuralInverseAuditEvidenceAllowedBuilders` | `["organisation"]` | `[]` | Who bundles may be exported for: device key fingerprints and `organisation` |
| `evidence.reproductionAllowed` | `NeuralInverseAuditEvidenceReproductionAllowed` | `true` | `false` | Whether a recorded AI request may be re-run |
| `evidence.includeContent` | `NeuralInverseAuditEvidenceIncludeContent` | `false` | `false` | Whether evidence reports may show raw content |
| `upload.enabled` | `NeuralInverseAuditUploadEnabled` | `false` | `false` | Send agent events to your organisation's Govern deployment |
| `upload.person` | `NeuralInverseAuditUploadPerson` | `false` | `false` | Also send a person's own actions (needs `upload.enabled`) |
| `upload.content` | `NeuralInverseAuditUploadContent` | `false` | `false` | Also send redacted content of agent events |

## Platform hardening

| Setting | Policy | Default | Meaning |
|---|---|---|---|
| `neuralInverse.security.allowDebugging` | `NeuralInverseSecurityAllowDebugging` | `true` | When `false`: inspectors and remote debugging are refused, developer tools close as they open, and every attempt is recorded |
| `neuralInverse.security.requireSignedApp` | `NeuralInverseSecurityRequireSignedApp` | `false` | Refuse agent features unless the OS verifies the app's code signature and the product checksums match |
| `neuralInverse.security.trustedPublishers` | `NeuralInverseSecurityTrustedPublishers` | `[]` | Publishers that satisfy `requireSignedApp`: `apple-team:<team id>`, `authenticode:<thumbprint>`, `rpm-key:<key id>`, `package:<name>` |

## Organisation context

| Setting | Policy | Default |
|---|---|---|
| `neuralInverse.context.enabled` | `NeuralInverseContextEnabled` | `true` |
| `neuralInverse.context.defaultSpaceId` | `NeuralInverseContextDefaultSpace` | empty |
| `neuralInverse.context.tokenBudget` | `NeuralInverseContextTokenBudget` | 4096 (256 to 32000) |
| `neuralInverse.context.sourceKinds` | `NeuralInverseContextSourceKinds` | empty (every kind) |
| `neuralInverse.context.autoHandoffOnPullRequest` | `NeuralInverseContextAutoHandoff` | `ask` (or `never`) |

## Vault and Checks

| Setting | Policy | Default | Meaning |
|---|---|---|---|
| `neuralInverse.vault.agentEnvironment` | `NeuralInverseVaultAgentEnvironment` | empty | Policy only. More environment variables to withhold from agent terminals. See [Secrets](https://neuralinverse.com/docs/editor/secrets/). |
| `neuralInverse.checks.enabled` | none | `true` | Check open files as you type. Always governed, so it stays on. |

## Chat and agent host

| Setting | Default in Neural Inverse | Meaning |
|---|---|---|
| `chat.agentHost.claudeAgent.enabled` | `true` | Register the Claude engine. Needs an agent host restart. |
| `chat.agentHost.codexAgent.enabled` | `false` | Register the Codex engine, which runs only on a ChatGPT or OpenAI Codex account |
| `chat.agentHost.byokModels.enabled` | `true` | Offer your connected models to agent sessions |
| `chat.editor.localAgent.enabled` | `false` | New Editor chats start as agent sessions |
| `chat.automations.enabled` | `true` (experimental) | Automations in the Agents app |

Under an organisation policy, `chat.tools.global.autoApprove`, `chat.tools.edits.autoApprove`, `chat.tools.urls.autoApprove`, `chat.tools.terminal.enableAutoApprove` and `chat.tools.terminal.autoApprove` are governed.

## Environment variables

| Variable | Meaning |
|---|---|
| `NI_SHARED_AGENT_HOST` | `1` forces one agent host shared by the Editor and the Agents app; `0` gives each app its own. Default: shared on macOS, separate on Windows and Linux. |

## Appearance

| Setting | Default | Meaning |
|---|---|---|
| `workbench.experimental.modernUI` | off | The modern Editor layout (experimental) |
| `workbench.experimental.modernUIEditorTabStyle` | `connected` | `connected` or `pill` tabs, with modern UI on. The Agents app follows it for chat and side-panel tabs. |
| `window.density.layout` | `default` | `compact` removes outer spacing and rounded corners in the Editor, with modern UI on |
| `workbench.modernUIFrostedGlass` | `true` | Frosted overlays (menus, Command Palette, hovers, dialogs, notifications). In the Editor it needs modern UI; the Agents app always uses it. Only with hardware-accelerated GPU compositing. |
| `workbench.modernUIFrostedGlassOpacity` | 80 | Overlay tint, 50 to 100 |

High-contrast themes, forced colours, reduced transparency in the OS, and `workbench.reduceTransparency: "on"` keep solid backgrounds.
