-
-
Notifications
You must be signed in to change notification settings - Fork 79.2k
Remote skill bin probe times out when node is co-located with gateway (macOS app as node on same host) #40527
Copy link
Copy link
Open
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:needs-live-reproClawSweeper needs live local, crabbox, or manual validation to confirm this issue.ClawSweeper needs live local, crabbox, or manual validation to confirm this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:otherThis issue has meaningful maintainer-visible impact outside the owned taxonomy.This issue has meaningful maintainer-visible impact outside the owned taxonomy.impact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.Session, memory, transcript, context, or agent state can drift or corrupt.issue-rating: 🐚 platinum hermitGood issue quality with a plausible reproduction path needing some confirmation.Good issue quality with a plausible reproduction path needing some confirmation.
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:needs-live-reproClawSweeper needs live local, crabbox, or manual validation to confirm this issue.ClawSweeper needs live local, crabbox, or manual validation to confirm this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:otherThis issue has meaningful maintainer-visible impact outside the owned taxonomy.This issue has meaningful maintainer-visible impact outside the owned taxonomy.impact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.Session, memory, transcript, context, or agent state can drift or corrupt.issue-rating: 🐚 platinum hermitGood issue quality with a plausible reproduction path needing some confirmation.Good issue quality with a plausible reproduction path needing some confirmation.
Type
Fields
Give feedbackNo fields configured for issues without a type.
Summary
When the OpenClaw macOS app connects to the gateway running on the same machine with the
noderole, theskills-remotesystem attempts to probe it for skill binaries viasystem.run/system.which. The macOS app does not handle this RPC, causing a timeout warning on every gateway startup and node reconnect:Root Cause
noderole → approvednode-command-policy.ts→PLATFORM_DEFAULTS.macosauto-includessystem.run,system.run.prepare,system.whichskills-remote.ts→primeRemoteSkillsCache()sees a Mac node withsystem.run→ probes it for installed binssystem.run/system.whichRPCs → probe times outThis is a mismatch: the macOS platform defaults assume the node can run shell commands (designed for remote Mac nodes running the CLI/daemon), but the macOS app does not implement that capability.
Impact
Current Workaround
Adding
denyCommandsto block the probe-triggering commands:{ "gateway": { "nodes": { "denyCommands": ["system.run", "system.run.prepare", "system.which"] } } }This works but is heavy-handed — it also blocks legitimate
system.runfor any actual remote nodes that could handle it.Suggested Fix
A few possible approaches (not mutually exclusive):
Detect co-located nodes: If the node's connection originates from
127.0.0.1/::1and the gateway already has local shell access, skip remote bin probing for that node.Node capability declaration: Have nodes declare which commands they actually implement (the macOS app could omit
system.runfrom its declared capabilities). The probe already checksdeclaredCommandsviaisNodeCommandAllowed()— if the app declared an empty or accurate command set, the probe would skip it.Separate app vs CLI platform defaults: Distinguish between
macOS (app)andmacOS (CLI/daemon)inPLATFORM_DEFAULTS. The app client mode is"ui"vs"cli"— this metadata is already available in the pairing record.Add a config flag: Something like
gateway.nodes.skipRemoteBinProbe: trueorskills.remote.enabled: false(currentlyskills.remoteis rejected as an unrecognized config key).Environment
Related
node-command-policy.ts—PLATFORM_DEFAULTS.macosincludesSYSTEM_COMMANDSskills-remote.ts—primeRemoteSkillsCache()triggers the probeskills.remoteas an unrecognized key (no way to disable remote skills via config)