# Config-Sync Cross-Preset Contamination

**URL:** <https://community.folivora.ai/t/config-sync-cross-preset-contamination/46782>\
**Category:** Bugs or Unexpected Behavior\
**Created:** [April 18, 2026, 10:55pm UTC](https://community.folivora.ai/t/config-sync-cross-preset-contamination/46782 "2026-04-18T22:55:42Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![yary\_h](https://community.folivora.ai/user_avatar/community.folivora.ai/yary_h/32/32503_2.png) [@yary\_h](https://community.folivora.ai/u/yary_h)\
**Post date:** [April 18, 2026, 10:55pm UTC](https://community.folivora.ai/t/config-sync-cross-preset-contamination/46782/1 "2026-04-18T22:55:42Z")

</div>

**Describe the bug**  
Sync overwrote a recently configured floating menu - I details in “Syncing static parent config, excluding dynamic child items” post. This is more details from AI about how the sync failed, to be a general sync-bug report.

* * *

**Affected input device (e.g. MacBook Trackpad, Magic Mouse/Trackpad, Touch Bar, etc.)**🙂macbook mouse & menu

* * *

**Device information:**

- Type of Mac:MacBook Pro 14” 2023

- macOS version: 26.4.1

- BetterTouchTool version: 6.396

* * *

**Additional information:** AI-generated report

# Bug Report: Cross-Preset Contamination — Synced Preset Overwrites Local Preset Triggers

**Category:** Unexpected Behavior  
**Reproducibility:** Occurred after BTT update/restart with sync enabled

* * *

## Summary

After BTT update + restart, triggers in a **local (non-synced) preset** were severely corrupted by data from the **"Synced" preset**. The corruption manifested as:

1. **Empty "zombie" actions** from the Synced preset injected into local preset triggers
2. **Complete deletion** of a complex floating menu trigger
3. **Config property gutting** — a floating menu lost 32 of 39 config properties

The root cause appears to be a **cross-preset boundary violation** during sync/restart: the Synced preset's data overwrote or deleted data belonging to a completely separate local preset (`sequoia_status_item_bar`).

* * *

## Evidence

### 1. Zombie Action Shells (5 instances)

Five triggers in the `sequoia_status_item_bar` preset had **empty action shells** injected into them. Each zombie action had:

- `BTTTriggerBelongsToPreset: "Synced"` ← **wrong preset**
- No `BTTPredefinedActionType` (the field that defines what the action does)
- No meaningful configuration — just a UUID and preset tag

These actions were children of triggers that belonged to `sequoia_status_item_bar`, creating an impossible state: a parent trigger in preset A containing child actions tagged as belonging to preset B.

**Affected triggers:**

| Trigger | Trigger Preset | Zombie Action UUID | Action's Preset Tag |
| --- | --- | --- | --- |
| Battery status item | sequoia\_status\_item\_bar | _(removed)_ | Synced |
| BetterSnapTool status item | sequoia\_status\_item\_bar | _(removed)_ | Synced |
| BTT icon status item | sequoia\_status\_item\_bar | 4CBD98D2-... | Synced |
| Unnamed status item #1 | sequoia\_status\_item\_bar | _(removed)_ | Synced |
| Unnamed status item #2 | sequoia\_status\_item\_bar | _(removed)_ | Synced |

The zombie on the BTT icon status item was directly responsible for the StatusItemBar failing to open — it was the first action in the action list, and since it had no `BTTPredefinedActionType`, it effectively became a no-op that blocked execution.

### 2. Complete Trigger Deletion — HoverRecognitionOverlay

The **HoverRecognitionOverlay** floating menu (UUID: `B7C825A4`) was completely deleted from the config. This was a complex trigger with:

- 42 config properties defining an invisible hover detection overlay
- 3 child items (hover-start action → Show StatusItemBar, dummy hit area, hover-end action → Hide StatusItemBar)
- Careful positioning at top-right of the focused screen

After the restart, it simply didn't exist. No trace in any preset. It had to be fully recreated from a backup preset file.

### 3. Config Property Gutting — StatusItemBar

The **StatusItemBar** floating menu (UUID: `356DDAB3`) retained its basic existence but lost most of its configuration:

| | Before (from backup) | After corruption |
| --- | --- | --- |
| `BTTMenuConfig` properties | **39** | **~7** |
| Positioning config | Full (relative to screen, anchored center-right) | Missing |
| Visual config | Blur, padding, spacing, corner radius, colors | Missing |
| Behavior config | Hover animations, visibility, window level | Missing |
| `BTTMenuVisibility` | 1 (hidden by default, shown via action) | Missing (defaults to 0 = always visible) |
| `BTTMenuElementIdentifier` | "StatusItemBar" | Missing |

The menu still existed as a trigger, but with its config stripped it couldn't function — it had no positioning, no visibility control, and no element identifier for Show/Hide actions to reference.

### 4. Additional Zombie Items in StatusItemBar

Post-recovery inspection found **2 additional zombie child items** inside the StatusItemBar (UUIDs: `8F07173B`, `B061F84F`) that:

- Have no `BTTTriggerType` set
- Have names equal to their own UUIDs (auto-generated placeholder names)
- Have minimal config (only `BTTMenuElementIdentifier` set to their own UUID)
- Were not present in the original backup preset

These are likely additional artifacts of the cross-preset sync contamination.

* * *

## The Anti-Pattern

The core issue is a **preset boundary violation**. BTT's preset system implies isolation — triggers in preset A should not be affected by sync operations on preset B. But the observed behavior shows:

```auto
Synced preset sync/load
  → Reaches into sequoia_status_item_bar preset
    → Injects empty action shells with "Synced" preset tag
    → Deletes HoverRecognitionOverlay entirely
    → Strips StatusItemBar config to minimal skeleton
    → Inserts unnamed zombie child items

```

This suggests the sync mechanism may be matching/merging triggers by UUID or some other identifier across preset boundaries, rather than operating strictly within the Synced preset's scope.

* * *

## Steps to Reproduce (Suspected)

1. Have two presets: one synced ("Synced"), one local ("sequoia\_status\_item\_bar")
2. Both presets contain Global floating menu triggers
3. Trigger BTT sync (e.g., by updating BTT, which causes a restart)
4. After restart, inspect the local preset's triggers

**Note:** I haven't confirmed whether the triggers share any identifiers across presets that could cause UUID-based merging. The corruption might be triggered by overlapping `BTTMenuElementIdentifier` values or by the sync mechanism's trigger-matching logic.

* * *

## Impact

- **Functional breakage:** The StatusItemBar floating menu stopped appearing entirely (the primary hover trigger was deleted, and the zombie action blocked the fallback)
- **Data loss:** 32 config properties lost from StatusItemBar, entire HoverRecognitionOverlay trigger tree deleted
- **Silent corruption:** No error messages, no UI indication that anything went wrong. The user only notices when functionality breaks.
- **Recovery difficulty:** Required a backup preset file and manual JSON-level restoration. Without the backup, the full config would have been unrecoverable.

* * *

## Fix Applied (Manual)

1. Removed all 5 zombie action shells via `manage_trigger_actions` (operation: remove)
2. Restored StatusItemBar's full 39-property `BTTMenuConfig` via `update_btt_trigger`
3. Recreated HoverRecognitionOverlay from backup preset via `create_new_btt_trigger_from_json`
4. Fixed HoverRecognitionOverlay's preset assignment (it defaulted to "Synced" on creation; updated to "sequoia\_status\_item\_bar")
5. Removed 2 additional zombie child items from StatusItemBar

* * *

## Suggested Fix

The sync mechanism should enforce **strict preset boundaries** :

- When loading/applying the Synced preset, only modify triggers where `BTTTriggerBelongsToPreset == "Synced"`
- Never inject actions into triggers belonging to other presets
- Never delete or modify triggers belonging to other presets
- If UUID conflicts exist across presets, handle them by skipping (not merging)

Additionally, a **sync integrity check** on startup could detect cross-preset contamination (actions whose `BTTTriggerBelongsToPreset` doesn't match their parent trigger's preset) and flag or auto-repair it.

* * *

## Environment

- BTT 6.x (latest stable as of April 2026)
- Two Macs syncing via BTT's built-in sync
- Presets: "Synced" (synced) + "sequoia\_status\_item\_bar" (local, not synced)

---

<div class="post-metadata">

**Author:** ![Andreas\_Hegenberg](https://community.folivora.ai/user_avatar/community.folivora.ai/andreas_hegenberg/32/39221_2.png) [@Andreas\_Hegenberg](https://community.folivora.ai/u/Andreas_Hegenberg)\
**Post date:** [April 19, 2026, 6:07am UTC](https://community.folivora.ai/t/config-sync-cross-preset-contamination/46782/2 "2026-04-19T06:07:13Z")

</div>

oh my god please stop the ai generated posts, they are so long, impossible to read and contain so much incorrect (guessed) stuff. I‘m closing all of them as they make me sick just looking over them.

---

<div class="post-metadata">

**Author:** ![Andreas\_Hegenberg](https://community.folivora.ai/user_avatar/community.folivora.ai/andreas_hegenberg/32/39221_2.png) [@Andreas\_Hegenberg](https://community.folivora.ai/u/Andreas_Hegenberg)\
**Post date:** [April 19, 2026, 6:07am UTC](https://community.folivora.ai/t/config-sync-cross-preset-contamination/46782/3 "2026-04-19T06:07:16Z")

</div>


