SYNC
Triggers an out-of-band reconciliation tick. The agent immediately fetches its assignments from the gateway and runs a full desired-state reconcile — it re-applies every assigned action, not just new or changed ones, exactly like a fresh connection does. That's the lever for correcting drift now instead of within the next reconciliation interval.
SYNC is an instant action. It bypasses the reconciliation cadence; the actions it triggers still respect their own schedules and maintenance windows.
Parameters
None. Instant actions are parameterless — the signed envelope carries no params, and the execution event records the canonical empty object {}.
Idempotency
None in the traditional sense. Triggering SYNC is itself the operation, and the actual work performed depends on the device's assignments at that moment. The SYNC action itself reports success with changed=false and Sync triggered as its output; the actions it triggers report their own outcomes.
Example
From an operator's perspective, "Sync now" on the device-detail page in the web UI. From an assignment:
type: SYNC
Gotchas
SYNCdoesn't pause for the maintenance window. The actions it triggers respect their own windows, so dispatchingSYNCoutside one isn't dangerous; anything window-gated stays queued.- A flood of
SYNCto the same device coalesces. The trigger is a single-slot channel — while a sync is already pending, further SYNC actions log "sync already pending" and fold into that one tick. - This is the action you reach for when an operator wants to see their change land now rather than within the next reconciliation interval (default 30 minutes). Use it sparingly: a full re-apply re-runs everything, including
SHELLscripts without detection scripts and anySCRIPT_RUNin an assignment.