Use this page when you need to tune or pause a mounted Secret Sync engine. For blocked sync recovery and incident procedures, use the operator runbook. Use Convergence for queue and dispatch behavior and Reconcile and drift for background drift behavior.
Read the current mount configuration:
bao read secret-sync/configConfiguration writes are partial updates. Omitted settings retain their stored values, and concurrent writes handled by one mount process are serialized so one update does not restore another field from a stale snapshot.
Fresh mounts start with restore_guard=false. If restore_guard=true after a
restore, clone, or manual restore-guard rearm, remote mutation is blocked until
review is complete and the guard is acknowledged.
bao write -force secret-sync/config/restore-guard/acknowledgeUse Restore and clone review before acknowledging the guard in restored or cloned environments.
Set disabled=true to pause background provider traffic and remote mutation:
bao write secret-sync/config disabled=true
bao write secret-sync/config disabled=falseManual reconcile remains available while disabled because it does not write destination secrets. Manual queue drains and remote mutation remain blocked until the mount is enabled again.
Fresh mounts default security_posture=standard. This keeps onboarding simple:
unconstrained destinations are accepted, and explicit source sync enablement is
not required before sync.
Set security_posture=hardened when application owners can manage their own
source paths or associations:
bao write secret-sync/config security_posture=hardenedHardened posture requires source sync to be explicitly enabled with
sources/<path>/enable before enabled associations can enqueue or dispatch
remote mutation. It also
rejects destination writes that do not set both
allowed_source_path_prefixes and allowed_resolved_name_prefixes.
Association create, enable, manual sync, reconcile, and queued dispatch reject
destinations that do not set both
allowed_source_path_prefixes and allowed_resolved_name_prefixes.
Destination checks report destination_unconstrained for that condition.
When moving an active mount from standard to hardened posture, constrain its
destinations first, set security_posture=hardened, and then enable each source.
Queued operations rejected by the newly active source guard become terminal;
sources/<path>/enable re-enqueues the current version for enabled associations
with active destinations so those sources can converge under the hardened
policy. The enable request fails and leaves source sync disabled when the queue
cannot admit all required operations.
Changing back to security_posture=standard relaxes those posture checks for
future operations.
queue_capacity limits the number of pending outbox operations accepted by the
mount. When the queue is full, writes that would enqueue sync work fail before
committing a new source version.
bao write secret-sync/config queue_capacity=1000Set queue_capacity=0 only for a deliberate enqueue freeze. Existing queued
work can still drain when other safety gates allow remote mutation.
Background drift work is opt-in. The default drift_repair=off performs no
periodic provider reads for drift.
Use detect to refresh status from provider read-state checks, or repair to
also enqueue owned DRIFTED objects for normal queued repair:
bao write secret-sync/config \
drift_repair=detect \
drift_reconcile_interval=1h \
drift_reconcile_batch=16repair does not take over ownership-lost objects. Use the provider guide and
operator runbook when status reports REMOTE_OWNERSHIP_LOST or
REMOTE_MISSING.
Fresh mounts default event_dispatch_enabled=true. Enqueue-producing requests
wake a bounded dispatcher immediately after durable queue commit, so normal
sync usually starts without waiting for the periodic callback.
Tune one wakeup batch with event_dispatch_max_operations:
bao write secret-sync/config \
event_dispatch_enabled=true \
event_dispatch_max_operations=16The API contract remains asynchronous: writes still return
sync_operation_ids, and periodic processing remains the recovery path for
missed wakeups, retries, and restart recovery.