macOS Chrome Remote Desktop launchd debugging remote access

Chrome Remote Desktop Stuck on Starting on macOS: What Actually Fixed It

Chrome Remote Desktop kept saying Starting and wiping my setup. The real culprit was macOS Background Task Management silently disabling Google LLC.

Munees Raja
Munees Raja

I set up Chrome Remote Desktop on my MacBook, clicked Turn on, and got stuck here:

Chrome Remote Desktop is starting up on the remote computer. Please try again in a minute.

That minute turned into an hour. And later it got weirder: every time I reopened it, my setup was gone and it asked me to Setup remote access again.

Here’s the short version.

The host was fine, the agent was not

The host and plist were installed. The per-user service just was not loaded:

launchctl print gui/$(id -u)/org.chromium.chromoting
# Could not find service "org.chromium.chromoting" in domain for user gui: 501

Running the host by hand showed the first real error:

"/Library/PrivilegedHelperTools/ChromeRemoteDesktopHost.app/Contents/MacOS/remoting_me2me_host_service" --run-from-launchd
# A required permission was not granted.

So I granted Accessibility and Screen Recording to the host bundle and the Mac came online.

But the official agent still would not stay loaded, so I wrote a custom user wrapper with RunAtLoad + KeepAlive. It worked for a day. Then the setup started wiping itself.

The logs said:

Host was deleted from the directory.
Host returned permanent exit code HOST_DELETED (106)

Every re-setup was creating a new host_id and deleting the old one. The wrapper was a bandage on a symptom.

The actual culprit: macOS background items

There is a layer above launchd called Background Task Management (BTM). launchd said the job was enabled. BTM disagreed:

sfltool dumpbtm | grep -A6 "Google LLC"
# Disposition: [disabled, allowed, not notified] (0x2)

Google LLC was disabled under System Settings -> General -> Login Items & Extensions. That is what was silently killing org.chromium.chromoting at login and sending me into the re-setup loop.

The fix

  1. Enable Google LLC in System Settings -> General -> Login Items & Extensions.
open "x-apple.systempreferences:com.apple.LoginItems-Settings.extension"
sfltool dumpbtm | grep -A6 "Google LLC"   # should say [enabled, allowed, ...]
  1. Drop the wrapper and load Google’s official agent:
launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.muneesraja.chromeremotedesktop.host.plist
launchctl bootstrap gui/$(id -u) /Library/LaunchAgents/org.chromium.chromoting.plist
launchctl print gui/$(id -u)/org.chromium.chromoting   # state = running
  1. Click Turn on once. Do not keep re-running setup. That is the thing deleting your device.

Takeaway

If CRD is stuck on Starting or keeps asking you to set up again, do not trust the browser. Check the terminal, check permissions, and check Background Task Management before you touch launchd.

After all that:

Online

That one word felt way better than it should have.


Got stuck with some weird macOS or remote setup issue? Book a call or find me on GitHub.

Comments