Here's the setup. I have a prefab that I open to "prefab mode" in editor, let's call the root prefab as "Window": Window (Existing prefab) --A (Child, not a prefab) -- B (New nested prefab that I instantiate from a script) I have a script in A which I can use to instantiate B from a prefab. This works, but when I exit prefab mode, the instantiated prefab (B) is not saved as part of the "Window" prefab. Here's the code: GameObject A = ...; GameObject go = PrefabUtility.InstantiatePrefab(myPrefabB) as GameObject; go.transform.SetParent(A.transform, false); I'm obviously the call to a PrefabUtility method that adds the instantiated prefab B to be part of the Window prefab. Any clues? This all works if I just drag B into its place in the editor, but that's not what I want to achieve.