You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
macOS: setStableProcessTitle() runs every 5 s → one LaunchServices check-in per session every 5 s (launchservicesd CPU) #1000
Since the fix for #764 (v1.50.1), the process title is stable (command-code) — thanks.
But writeTitle() calls setStableProcessTitle() on every call, and useTerminalTitle re-asserts the terminal title every 5 s:
On macOS, every process.title assignment goes through libuv's darwin
proctitle code, which checks the process in with LaunchServices. lsd logs pid N registering self and the check-in is rejected with -10811
(kLSNotAnApplicationErr), but launchservicesd still does the work (code
signature validation) each time. So every interactive session costs one
LaunchServices check-in every 5 s, forever, idle or not, even though the
value never changes.
Impact (measured)
macOS 26.6 (25G72), Apple Silicon (M5 Max, 18 cores), Node v24.21.0 arm64,
Command Code 1.79.1, ~20–30 interactive sessions open in a terminal multiplexer:
12 check-ins / min per session, constant (10-min idle window: 119–120 per session).
45-min audit: launchservicesd was the 📦 NEW: Eject Script #1 CPU consumer of the machine:
353 % average, 433 % p95 (≈3.5 cores); 84 of 87 registering self
events per probe window came from Command Code processes.
Controlled experiment with throw-away sessions (--no-session, no prompt sent):
baseline 257 % → +4 sessions 316 % → +8 sessions 362 % launchservicesd CPU
(≈12–15 % of a core per session, ≈0.7 s of launchservicesd CPU per check-in).
Those throw-away sessions ran Node x86_64 under Rosetta; arm64 sessions show
the same 12 / min cadence.
With Command Code itself: start one session in a terminal, then log stream --predicate 'process == "lsd" AND eventMessage CONTAINS "registering self"'
shows its pid every 5.000 s.
Suggested fix
Only write the process title when it changes, e.g.
or call it once at startup instead of inside writeTitle(). The OSC terminal
title write can stay on the 5 s interval — it does not touch LaunchServices.
Local workaround (until a release)
A user mod in ~/.commandcode/mods/ that performs the native write once and
then backs process.title with a plain JS property removes the check-ins
(same loop: 8 → 0 per 40 s; ps still shows command-code). It only takes
effect after a session's first message (mods load with the harness).
Activity