WAI Docs Wed Aug 19 13:22:37 EDT 2026
List
Quick Start
Quick Start
User Guide
User Guide
Policies - GuardRails
Policies - GuardRails
Witness Anywhere: Remote Device Security
Witness Anywhere: Remote Device Security
Witness Attack
Witness Attack
Administrator Guide
Administrator Guide
404
404
Configuring Cursor Proxy via Witness Anywhere
Note: New and updated features may not be immediately available on your dedicated deployment due to participation in limited release availability, beta programs, or regional configurations.
If you don't see a feature you expect, please reach out to your Customer Success team — we're happy to help.
Zscaler Integration: Cursor HTTP/1.1 Downgrade Configuration
Overview
For WitnessAI customers using Zscaler with SSL/TLS inspection enabled, Cursor traffic that is inspected over HTTP/2 can fail in production — sessions may hang, clients may report HTTP/2 protocol errors, and WitnessAI would not be able to receive visibility into Cursor prompts and agent activity. This is due to a Zscaler limitation that prevents reliable SSL/TLS inspection of Cursor thick client traffic over HTTP/2.
To restore reliable inspection and governance, it is required to configure Zscaler to downgrade Cursor domains to HTTP/1.1 at the SSL inspection layer while keeping Inspect enabled. This can be done in two steps:
- Create a custom URL category listing Cursor domains.
- Add a new SSL/TLS inspection rule that references that category, sits above the existing inspect rule for WitnessAI traffic, and has Enable HTTP/2 turned Off.
All other traffic continues to match the existing SSL inspection rules (HTTP/2 may remain enabled there).
Prerequisites
Requirement | Notes |
ZIA administrator access | Rights to edit URL Categories and SSL/TLS Inspection Policy |
WitnessAI SSL inspection | An existing rule that Inspects traffic forwarded to WitnessAI |
HTTP/2 toggle on tenant | Enable HTTP/2 appears only if Zscaler has enabled it for your organization. If the toggle is missing, contact Zscaler Support. |
Policy activation | After saving changes, activate policy in ZIA (standard workflow). |
Example names (you may rename):
- URL category:
Witness-Cursor-H1-Downgrade - SSL/TLS Inspection Policy:
H1-Downgrade-Cursor
Part A — Create a custom URL category
- Navigation:
Administration→URL Categories→ + Add URL Category - Click + Add URL Category.

- Name: e.g.
Witness-Cursor-H1-Downgrade. - URL Super Category:
Information Technology. - Under URLs Retaining Parent Category, click Add Items and copy paste the block of URLs provided below:
.cursor.com .cursor.sh .cursor.so
- Click Save.

Part B — Create SSL/TLS inspection rule (HTTP/2 disabled)
- Navigation:
Policy→SSL Inspection→ SSL/TLS Inspection Policy tab → + Add SSL/TLS Inspection Rule

- Rule Order: Make sure that it’s above the existing SSL/TLS inspection Rule for WitnessAI traffic
- Rule Name: e.g.
H1-Downgrade-Cursor. - Rule Status:
Enabled. - Criteria → URL Categories: Select your category from Part A (e.g.
Witness-Cursor-H1-Downgrade).

- Action: Inspect (required for WitnessAI to see decrypted Cursor traffic).
- Enable HTTP/2: Off (disabled). This forces HTTP/1.1 for matching Cursor domains—the core of this guide.
- Align other action fields with your existing inspect rule.
- Description (optional): e.g.
WitnessAI Cursor — HTTP/1.1 for SSL inspection compatibility. - Click Save.

Please remember to Activate the configuration in ZScaler after the above steps.
After configuration and activation, non-Cursor traffic continues to match your existing SSL inspection rules below this rule. HTTP/2 may remain enabled on those rules.
Witness Anywhere Integration: Cursor HTTP/1.1 Downgrade Configuration
Overview
For WitnessAI customers using Witness Anywhere, Cursor application in HTTP/2 mode will not honor the system PAC file on enrolled endpoints and the traffic goes out directly, bypassing the Witness Anywhere proxy. As a result, WitnessAI cannot inspect or govern that traffic, and Cursor usage may not appear in the WitnessAI console.
To restore reliable inspection and governance, it is required to switch to HTTP/1.1 mode inside the Cursor application on each enrolled endpoint. This is done either at registration time (new customers) or via a standalone migration script pushed through MDM (existing customers).
What changes on the endpoint
These settings affect Cursor only, not system proxy or Witness Anywhere PAC configuration.
Platform | Mechanism |
Windows | cursor.general.disableHttp2 set to true in the logged-in user’s %USERPROFILE%\AppData\Roaming\Cursor\User\settings.json |
macOS | Per-user preference NetworkDisableHttp2 on bundle ID com.todesktop.230313mzl4w4u92 |
Cursor must be restarted after the change is applied so settings take effect reliably.
Note on end-user override behavior:
Windows: End users can open Cursor settings and manually change the HTTP mode to HTTP2 , which would stop traffic forwarding to the WitnessAI Proxy.
macOS: End users cannot change this setting within the Cursor app UI — because it is applied via a CLI-based defaults command, Cursor will display the setting as disabled/read-only for them.
New Witness Anywhere customers
Before the Witness Anywhere registration script is uploaded to MDM provider, enable the built-in admin flag so HTTP/2 is disabled automatically after a successful device registration.
Windows
At the top of the registration script:
$disableCursorHttp2 = $true # Change from $false to disable HTTP/2 on Cursor
Default is
$false. Set to $true, then upload the script to MDM and run your normal enrollment workflow.macOS
Near the top of the registration script:
disableCursorHttp2="true" # Change from "false" to disable HTTP/2 on Cursor
Default is
"false". Set to "true", then upload to MDM and run enrollment.Tanium
The Tanium deployment bundle uses a numeric parameter instead of a hardcoded variable:
[int]$DisableCursorHttp2 = 1 # 1 = disable Cursor HTTP/2, 0 = leave unchanged
After upload
When registration completes successfully, the script runs the same Cursor HTTP/2 disable logic as the standalone migration scripts below. No separate migration script is needed for new rollouts if the flag is set before MDM upload.
Existing Witness Anywhere customers
Devices enrolled before the
disableCursorHttp2 flag was enabled will not have Cursor HTTP/2 disabled until you take action.Recommended approach
- Select the script corresponding to the Operating System.
- Windows
# WitnessAI — Disable Cursor HTTP/2 (Windows) Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process -Force $logFilePath = "C:\Windows\Temp\witnessai-disable-cursor-http2-log.txt" Start-Transcript -Path $logFilePath function Disable-CursorHttp2 { param([string]$username) $settingsDir = "$env:SystemDrive\Users\$username\AppData\Roaming\Cursor\User" $settingsFile = Join-Path $settingsDir "settings.json" try { if (-not (Test-Path $settingsDir)) { New-Item -Path $settingsDir -ItemType Directory -Force | Out-Null } if (-not (Test-Path $settingsFile)) { '{}' | Set-Content -Path $settingsFile -Encoding UTF8 } $raw = Get-Content -Path $settingsFile -Raw -ErrorAction Stop if ([string]::IsNullOrWhiteSpace($raw)) { $raw = '{}' } $json = $raw | ConvertFrom-Json if ($null -eq $json."cursor.general.disableHttp2") { $json | Add-Member -NotePropertyName "cursor.general.disableHttp2" -NotePropertyValue $true -Force } else { $json."cursor.general.disableHttp2" = $true } $json | ConvertTo-Json -Depth 10 | Set-Content -Path $settingsFile -Encoding UTF8 Write-Output "Cursor HTTP/2 disabled for '$username'" } catch { Write-Output "Failed to disable Cursor HTTP/2 for '$username'" exit 1 } } $loggedInUser = (Get-WmiObject -Class Win32_ComputerSystem).UserName.Split('\')[-1] if (-not $loggedInUser) { Write-Output "No user is currently logged in." Stop-Transcript exit 1 } Disable-CursorHttp2 -username $loggedInUser Stop-Transcript exit 0
b. macOS
#!/bin/bash # WitnessAI — Disable Cursor HTTP/2 (macOS) set -euo pipefail LOG_FILE="/tmp/witnessai-disable-cursor-http2.log" exec >>"$LOG_FILE" 2>&1 echo "**************** WitnessAI disable Cursor HTTP/2 at $(date '+%Y-%m-%d %H:%M:%S') ****************" current_user=$(stat -f %Su /dev/console) if [[ -z "$current_user" || "$current_user" == "root" || "$current_user" == "loginwindow" ]]; then echo "No interactive user logged in; skipping Cursor HTTP/2 disable" exit 0 fi if sudo -u "$current_user" defaults write com.todesktop.230313mzl4w4u92 NetworkDisableHttp2 -bool true; then echo "Cursor HTTP/2 disabled for '$current_user'" exit 0 else echo "Failed to disable Cursor HTTP/2 for '$current_user'" exit 1 fi
- Upload the appropriate script to your MDM provider.
- Deploy as a one-time script in the same execution context as your other Witness Anywhere MDM scripts (typically root on macOS, SYSTEM on Windows).
- Ensure an interactive user is logged in when the script runs; otherwise it exits without changes.
Re-running the full Witness Anywhere registration script only to flip this flag is usually unnecessary and may be disruptive; the standalone scripts are preferred for existing fleets.
Script logs
Platform | Log path |
macOS | /tmp/witnessai-disable-cursor-http2.log |
Windows | C:\Windows\Temp\witnessai-disable-cursor-http2-log.txt |