Quick answer: Prefab Mode requires explicit save. Press Ctrl-S (Cmd-S) before closing the stage, or enable Auto Save in the Prefab Mode toolbar. If save fails, the prefab probably has missing-script references — remove or fix those before saving.
Here is how to fix Unity Prefab Mode edits that vanish the moment you click the back arrow to leave Prefab Mode. You spend an hour rearranging children, tweaking values, and then close. The next time you open the prefab, none of that work is there. The cause is unsaved changes; the fix is making save explicit or automatic.
The Symptom
You enter Prefab Mode by double-clicking a prefab. Make changes. Click the back arrow at the top-left to return to scene mode. Reopen the prefab — changes are gone. No error appears.
What Causes This
Closing without save. Prefab Mode behaves like a separate “scene”. Changes are buffered until saved. The back arrow does not auto-save by default.
Auto Save off. The Prefab Mode toolbar has an Auto Save toggle. With it off, you must save manually.
Save failure. If the prefab has missing scripts or invalid component references, Save Prefab can refuse and revert. The error appears in the console but is easy to miss.
Read-only asset. If the .prefab file is read-only on disk (e.g., from version control without a checkout), save fails silently for some platforms.
The Fix
Step 1: Save before closing. Press Ctrl-S (Cmd-S) while in Prefab Mode. The asterisk on the breadcrumb name disappears. Then close the stage safely.
Step 2: Enable Auto Save. Top-right of the Prefab Mode view, check the Auto Save box. Each edit is committed immediately. Tradeoff is no “cancel” option — if you regret a change, you must Undo before exiting.
Step 3: Diagnose missing scripts. Look in the Hierarchy for components with the warning icon. Remove them or fix their reference (drag the correct script onto the placeholder). Then save again.
// Editor utility: list missing scripts in current prefab
[UnityEditor.MenuItem("Tools/List Missing Scripts In Prefab")]
static void List()
{
var stage = UnityEditor.SceneManagement.PrefabStageUtility.GetCurrentPrefabStage();
if (stage == null) { Debug.Log("Not in prefab mode"); return; }
foreach (var go in stage.prefabContentsRoot.GetComponentsInChildren<Transform>(true))
{
var components = go.GetComponents<Component>();
foreach (var c in components)
{
if (c == null) Debug.Log($"Missing script on: {go.name}", go);
}
}
}
Step 4: Check file permissions. If saves fail, ensure the .prefab file is writable. For Perforce / Plastic, check it out before editing. For Git LFS or read-only backups, copy the file to a writable location.
Step 5: For nested prefabs, save outermost. If you edit a nested prefab while inside another, you may need to save the inner first, exit, then save the outer. The breadcrumb shows the hierarchy; click each level and Ctrl-S as needed.
Auto Save Caveats
Auto Save commits every change. If you experiment in Prefab Mode and decide an experiment was wrong, you must rely on Edit → Undo (which works), or restore from version control. Some teams prefer Auto Save off so a deliberate save acts as a checkpoint.
Best Practice For Critical Prefabs
For prefabs at the heart of your game (player, hero items, complex UI), keep Auto Save off and save manually. For experimental or visual-only prefabs, Auto Save reduces lost work risk.
“Prefab Mode is a buffered editor. Save makes it real. Auto Save makes it automatic.”
Related Issues
For accidental Apply All, see Prefab Instance Overrides Applied. For nested override loss, see Nested Override Lost.
Ctrl-S before closing. Or Auto Save. Missing scripts block save. The prefab persists.