Supported platforms
Supported IDEs/coding agents
- VS Code
- Devin Desktop
- Cursor
- Claude Code (via Corridor CLI)
- Codex (via Corridor CLI)
- Factory Droid (via Corridor CLI)
Prerequisites
- Enterprise tier subscription to Corridor. You can verify this at app.corridor.dev/teams
- Team Owner role in Corridor. You can verify this at app.corridor.dev/teams—you should see “Owner” next to your email
Verifying a domain
In order to use the MDM scripts, you must verify an email domain for your team. Corridor will only provision users with the email domain you have verified.Navigate to Teams
Enter your domain
acme.com).Add DNS record
Creating a universal team token
In order to use the MDM scripts, you must create a universal team token to identify your team and verify your team admin access.Navigate to Teams
Generate a token
Copy the token
Managing PATH yourself
By default the installer adds~/.corridor/bin to PATH by appending a small block to one of the user’s shell profiles (~/.zshenv for zsh, the existing bash login profile on macOS, ~/.bashrc on Linux). The entry is always appended, never prepended, so system binaries keep priority, and it is guarded so nested shells don’t accumulate duplicate PATH entries.
If you provision PATH through a managed profile instead, tell the installer to leave shell profiles alone:
- macOS —
curl -fsSL https://app.corridor.dev/cli/install.sh | bash -s -- --no-path-modify - Windows, or anywhere you prefer an environment variable — set
CORRIDOR_NO_PATH_MODIFY=1
~/.corridor/bin/corridor (%USERPROFILE%\.corridor\bin\corridor.exe on Windows), so make sure your managed profile puts that directory on PATH—or invoke the absolute path in scripts and hooks.
fish users
fish reads none of the POSIX profiles above. For a fish login shell the installer instead writes itsPATH block to config.fish, in native fish syntax, under $XDG_CONFIG_HOME/fish/ when that variable is set (and absolute) or ~/.config/fish/ otherwise. Two consequences for managed installs:
- Run the installer with the target user’s environment. fish reads
config.fishfrom the user’sXDG_CONFIG_HOMEat login. If you run the installer with a different (or unset)XDG_CONFIG_HOMEthan the user’s fish session sees, the block lands where that session never reads it. Run the install step as the target user, or export their absoluteXDG_CONFIG_HOMEfor the install. A relativeXDG_CONFIG_HOMEis rejected (the installer cannot predict the directory fish will resolve it against). - Mixed-shell machines.
config.fishis authoritative for fish. A correctedPATHblock a previous install wrote to a POSIX profile is left in place, so a user who also runssh/bashkeepscorridorresolving there; only an old Corridor-managed~/.local/binprepend is stripped.
~/.local/bin PATH prepend an older installer wrote in place. That directory takes priority over system binaries, so if your fleet installed Corridor before this change, strip the # Added by Corridor CLI installer block from the shell profile as part of your rollout (the CLI also corrects it on its next run).
JAMF (macOS only)
For JAMF, you must create a configuration profile to push theUser email and Device serial fields to each managed computer.
Creating a configuration profile
Prerequisites
To set up a JAMF configuration profile, you must have:- A push certificate in JAMF Pro. See instructions here.
- The
Enable certificate-based authenticationandEnable push notificationssettings configured in Jamf Pro. For more information, see Security Settings.
Add configuration profile
Setup configuration profile
Upload plist
dev.corridor.mdm and set the file contents toSave configuration
Add the Corridor script
Create a script
Download the script
Add your token
CORRIDOR_TEAM_TOKEN value at the top of the file with the universal team token you generated.Upload and save
Corridor Installation Script, and upload the script with the shell/bash language option.
Save the script.Create a policy
Create a policy
Set the policy
Add the script to the policy
Corridor Installation Script you created in the previous step, and save the policy.Fleet (macOS only)
For Fleet, you must deploy a configuration profile that pushes theUser email and Device serial fields to each managed Mac, then run the Corridor script. Fleet can only substitute its per-host variables into configuration profiles, not into scripts, so both are required.
Prerequisites
- Fleet Premium with MDM enabled on your macOS hosts (the configuration profile requires MDM). Script execution is on by default for MDM-enrolled hosts; otherwise deploy
fleetdwith--enable-scripts. - Each host must have an end user in Fleet, through your IdP integration or a human-to-host mapping. Without one, Fleet cannot resolve the profile’s variables and the profile will not deliver.
- A user must be logged in on the Mac when the script runs (a locked screen is fine). At the login window the script skips and retries later, so credentials are not written to the wrong home directory.
Store your team token as a Fleet custom variable
Add the custom variable
CORRIDOR_TEAM_TOKEN with your universal team token. Do not paste the token into the script. Reference it as $FLEET_SECRET_CORRIDOR_TEAM_TOKEN (Fleet adds the FLEET_SECRET_ prefix and masks the value).Creating a configuration profile
Download the profile
Upload and scope
$FLEET_VAR_HOST_END_USER_IDP_USERNAME and $FLEET_VAR_HOST_HARDWARE_SERIAL to /Library/Managed Preferences/dev.corridor.mdm.plist.Confirm delivery
UserEmail and SerialNumber. If the profile fails with a missing IdP username error, set the host’s IdP username (email) on the host details page. Fleet resends once it resolves.Add the Corridor script
Download the script
Upload and save
$FLEET_SECRET_CORRIDOR_TEAM_TOKEN reference as-is.Run the script
On demand
Automatically
Kandji / Iru (macOS only)
For Kandji (including Iru, Kandji’s new UI), you must deploy a custom profile that writes Kandji’s global variables to each device before running the Corridor script.Create a custom profile
Download the official Global Variables profile
$EMAIL and $SERIAL_NUMBER) and writes them to /Library/Managed Preferences/io.kandji.globalvariables.plist — the file the Corridor Kandji script reads at runtime.Add custom profile
Upload the profile
Global Variables.mobileconfig file to the Custom Profile and save it.Attach to your Blueprint
EMAIL and SERIAL_NUMBER — these are the names the Corridor Kandji script reads at runtime. If your variables use different keys, you will have to change the DEVICE_SERIAL and USER_EMAIL variables in the script (the PlistBuddy print statements) to match.Add the Corridor script
Create a custom script
Download the script
Add your token
CORRIDOR_TEAM_TOKEN value at the top of the file with the universal team token you generated.Upload and save
CORRIDOR_TEAM_TOKEN to Kandji and click Save.Intune
Intune scripts support both macOS and Windows. You must first generate a Microsoft Graph token with the right permissions—this token is used to retrieve the device email.Generate a Microsoft Graph token
Open Graph Explorer
Set permissions
User.Read permissions. This requires Admin consent.Copy the token
Windows
Navigate to scripts
Add a script
Download the script
Add your tokens
CORRIDOR_TEAM_TOKEN value with your universal token, and replace the GRAPH_API_TOKEN value with the Microsoft Graph API access token.Configure script settings
Assign and save
macOS
Navigate to scripts
Add a script
Download the script
Add your tokens
CORRIDOR_TEAM_TOKEN value with your universal token, and replace the GRAPH_API_TOKEN value with the Microsoft Graph API access token.Configure script settings
Assign and save
Rolling back a deployment
You don’t need a custom teardown script — the Corridor CLI ships an uninstaller that reverses everything the rollout does. Rolling back has two independent halves, and you’ll usually want both:- Stop provisioning so no device gets (re)installed.
- Remove Corridor from devices that were already provisioned.
1. Stop provisioning
- Unscope or delete the Corridor install policy (and, for JAMF, the
dev.corridor.mdmconfiguration profile) in your MDM, so devices stop receiving the install. - (Optional, org-wide kill switch) Revoke the Universal Team Token. Go to app.corridor.dev/teams → Universal Team Tokens and revoke the token used in your MDM scripts. Once revoked, any
/mdm-sync-devicecall fails, so no new users or device tokens are created. Devices already provisioned keep their per-user token until you run the uninstall below.
2. Remove Corridor from a device
Run the uninstaller as the logged-in user. It revokes that device’s Corridor API token on the server and removes the CLI, agent hooks, MCP config, agent rules, and the~/.corridor/ directory:
code --uninstall-extension corridor.Corridor and cursor --uninstall-extension corridor.Corridor. The JAMF script below does this for you.uninstall.sh runs as root, it resolves the logged-in console user and removes that user’s install. Set CORRIDOR_UNINSTALL_USER=<username> to name the target user when detection is unavailable. When no user is logged in, it acts on root’s own home, so a root-owned install (for example in a container or CI image) is still removed. On macOS, if no console user resolves and root’s home holds no install either, it exits non-zero so the MDM retries at the next check-in instead of reporting a false success.The JAMF script below resolves the console user itself and runs the uninstaller as that user. It exits 0 when no one is logged in, so the policy retries at the next check-in.JAMF (macOS only)
Add an uninstall script
Corridor Uninstall Script, with these contents:Create an uninstall policy
Corridor Uninstall Policy, add the Corridor Uninstall Script under Scripts, set the trigger to Recurring Check-in with execution frequency Once per computer, and scope it to the devices you’re rolling back.Remove the install policy and profile
Corridor Installation Policy and the dev.corridor.mdm configuration profile so devices are not re-provisioned on their next check-in.Fleet (macOS only)
Upload a rollback script
Run and clean up
fleetctl run-script. Then remove the Corridor script from any policy automation and delete the dev.corridor.mdm configuration profile so hosts are not re-provisioned.Kandji / Iru (macOS only)
Add a Custom Script (Execution Frequency: Run once per device) whose contents arecurl -fsSL https://app.corridor.dev/cli/uninstall.sh | bash, assign it to the Blueprint you’re rolling back, then remove the Corridor Custom Script and the Global Variables profile from that Blueprint.
Intune
Add a platform script that runs the uninstaller, then unassign the install script:- macOS — set Run script as signed-in user: Yes and use
curl -fsSL https://app.corridor.dev/cli/uninstall.sh | bash. - Windows — set Run this script using the logged on credentials: Yes and run the CLI directly:
& "$env:USERPROFILE\.corridor\bin\corridor.exe" uninstall --non-interactive.