Skip to content

Pitfalls to avoid

Requires @openlatch/client 0.11.12 or later

Read this page before each stage of the deployment. Every row names what you see when the pitfall bites, how to avoid it, and the page that holds the full procedure. The first five rows of the start page are the ones that stall the most deployments.

PitfallWhat you seeAvoid itDetails
An egress rule that allows the console but forgets the install-time destinationsThe install fails before the client ever reaches the console, and it looks like a broken product rather than a closed routeAllow the package registry or your mirror, openlatch.ai for the install scripts, and github.com for an install through npmNetwork requirements
Allowlisting by IP addressThe route works for a while, then breaksThere is no static address range. Allowlist app.openlatch.ai by name and SNINetwork requirements
An NTLM-only proxyThe client cannot authenticate to the proxy on any machineNTLM is not supported, by design. Plan a Kerberos (Negotiate) or unauthenticated path for the client before the first waveNetwork requirements
A proxy auto-config file on LinuxThe install refuses the auto-config routeSet the route explicitly on Linux. Auto-config is evaluated by the operating system on Windows and macOS onlyNetwork requirements
Model endpoints buffered or stream-inspected by a proxyThe agent appears to stall, then prints everything at onceKeep the endpoints your agents already reach exempt from response buffering and streaming inspectionNetwork requirements
An unsupported platform in the waveThe install has no package for the machineWindows on ARM64 and musl-based Linux distributions such as Alpine are not supported. Check the floors in the checklistPrerequisites checklist
A shared machine treated as one installOnly the person who installed is coveredInstall and local state are per user. Each user of a shared machine runs an install of their ownPrerequisites checklist
PitfallWhat you seeAvoid itDetails
Signing in for the first time without the invitation, or from another addressThe console walks you through creating a new organization instead of opening yoursOpen the invitation link, from the address you gave your OpenLatch contactFirst steps in the console
An administrator’s browser cannot reach challenges.cloudflare.comThe sign-in check fails every timeAllow it for the browsers that sign in to the console. No machine running the client needs itNetwork requirements
Waiting for the setup wizard to appearThe invited owner of an organization OpenLatch created never sees it on their ownOpen it from Home › Reopen setupFirst steps in the console
Trusting the single sign-on connection test aloneThe test passes, and people still cannot sign inThe test only checks that the identity provider’s metadata URL or sign-on URL answers. Save first, then test, then sign in through SAML yourself in a private window before you invite anyoneFirst steps in the console
Allowed email domains set too broadlyPeople you did not invite register into the organizationKeep the domains narrow, and admit everyone else by invitationFirst steps in the console
Enrolling a fleet with a personal keyA personal key cannot hold host:enroll, only its owner can see it, and it stops working when that person leavesCreate an organization key from Host enrollment on Settings › API keys, one per waveFirst steps in the console
Turning off Collect identity signals from endpointsNo agent is ever matched to an ownerLeave the switch on wherever you want agents attributed to a personFirst steps in the console
Leaving audit retention at its defaultRecords past the window are purged every 24 hours once auto-purge is onSet the retention window and auto-purge before the rollout startsFirst steps in the console
PitfallWhat you seeAvoid itDetails
Revoking a wave’s key before its machines run the current clientA machine on an earlier client still authenticates with the key: it stops collecting updates, and the console refuses its key (OL-1201)The current client trades the key for a host credential of its own and no longer uses it once enrolled. Let the wave update before you revoke its keyPlan the rollout
A key passed on a command lineThe client refuses itSupply it from your secret store as a key file, through --api-key-file or OPENLATCH_API_KEY_FILE, or through the environment as OPENLATCH_API_KEY. Treat a deployment script’s body as readableDeploy the client
A proxy route held only in the installing shell’s variablesThe machine goes direct after the next restartThe client starts with the user’s session and inherits none of the shell’s variables. Let the install record the route, or hand it over with openlatch init --proxyDeploy the client
A proxy password inside the proxy URLThe client refuses the URLSupply the credential through OPENLATCH_PROXY or the prompt, which moves it into an encrypted file readable only by its ownerDeploy the client
A proxied host without a loopback bypassThe agent’s calls to the client leave for the corporate proxy, which answers with an errorExport NO_PROXY=127.0.0.1,localhost in the shell that launches the agent, where the agent does not receive the entry at installDeploy the client
Installing the client before the agentsAn agent installed afterwards is not connectedInstall the agents first, or run openlatch init again afterwards. A repeat is never destructiveDeploy the client
An unattended install without --yes, or without a keyThe enrollment cannot prompt, and stops with OL-1600Run openlatch init --yes with an enrollment key: --api-key-file, OPENLATCH_API_KEY_FILE or OPENLATCH_API_KEY. Name the organization with --org where the account belongs to severalDeploy the client
Deploying through browser sign-inEvery machine waits for a person with a console account at a terminal, and an unattended install stops with OL-1600Deploy with an organization key, the pilot included. Browser sign-in is for trying OpenLatch, or for one person on their own machineDeploy the client
A key typed on a command line for a hand installThe key lands in your shell historyRead it into OPENLATCH_API_KEY without typing it on the line, and clear the variable after the installDeploy the client
Intune treated like an interactive installerMachines are skipped or installed days laterRun a user-context script that fetches the key itself, expect assignments over days, and use the Win32 app where a machine gets its first agent after the script’s retries endDeploy the client
A Jamf policy that runs as rootA Jamf policy normally runs its scripts as root, so the client installs and enrolls for root instead of the developerResolve the user logged in at the console and run the install and the enrollment as that user, with launchctl asuser and sudo -u. Exit with an error when nobody is logged in, so the next check-in retriesDeploy the client
Widening a wave too earlyProblems found in wave 1 repeat across fifty machinesWiden only once a wave meets its exit criteria, and run a managed install against a sample before the full runPlan the rollout
PitfallWhat you seeAvoid itDetails
A machine that is running and covering nothingThe client is up and the console holds a record, but one agent was never wiredCount a machine as done only when openlatch doctor reports no problemVerify each machine and wave
An agent still waiting for its developerThe agent is connected on paper and not in practiceSome agents ask the developer to confirm the connection once. Chase those before closing a waveVerify each machine and wave
Expecting the machine in the console at onceThe machine is missing right after installIt appears within 24 hours, and within minutes on a healthy network. A last-seen time that stops moving points at the routeVerify each machine and wave
Following a sign-in remedy on a deployed machineopenlatch doctor names openlatch system auth login, and the person on the machine has no console accountRun openlatch init --yes with an organization key insteadDeploy the client
Expecting an owner with no directory connectedThe agent is recorded as unattributedConnect a directory, or have an editor name the owner by handFirst steps in the console
PitfallWhat you seeAvoid itDetails
Updating the files without restarting the clientThe machine reports a version mismatchEnd the maintenance window with openlatch restart, or the sign-out and sign-in your estate already schedulesOperate
Pinning the version and turning off the check tooMachines stop reporting that a newer version existsPin with OPENLATCH_AUTO_UPDATE=false and leave OPENLATCH_UPDATE_CHECK onOperate
A long outagePast the 100 MB cap, the oldest unsent records are dropped, with an OL-1204 warning in the logRestore the route before the cap is reached; the policies keep deciding meanwhileOperate
Treating a purge as a removalThe installed files and the PATH line stay on the machineopenlatch uninstall --purge removes the state directory and the stored credential. Delete the installed files separatelyUninstall
Deleting an agent in the console before uninstallingThe agent comes back with the next eventRemove the client from the machine firstUninstall
A scheduled re-run of the install on a host you cut offEndpoint management that reruns the install enrolls the host again, and it counts againGuard the recipe so that it enrolls once: it leaves a marker and skips the enrollment when it finds one. Otherwise take the machine out of the policy’s scope, or revoke the key it enrolls with, before you choose Cut it offDeploy the client
Blocking telemetry at the networkThe machine loses the console tooTelemetry and crash reports travel with the client’s own traffic. Turn them off on the client insteadData handling and security
The relay certificate bundle on a public URL, in a repository or in an image layerNothing at first; anyone holding it can intercept every machine that trusts itKeep the bundle in your secret store; import it at run time in containersUse your organization’s relay certificate
The bundle, with its private key, pushed by device managementThe profile installs, and the key reaches every machine’s management channelPush only relay-ca.cer, the public certificateUse your organization’s relay certificate
An EC key written with explicit curve parameters, the LibreSSL default on macOSThe install exits 8 with OL-2111Use the RSA 3072 recipe, or a named P-256 or P-384 curveUse your organization’s relay certificate
The install run as root or SYSTEMThe relay CA is trusted for the wrong account, and the person at the machine still sees the dialogRun the install as the machine’s userUse your organization’s relay certificate
A configuration profile opened by hand on macOS 13 or laterThe certificate is not trusted, and the install shows the dialogDeliver it through device management at computer level, then check with openlatch doctorUse your organization’s relay certificate