Quick answer: Add a [CoreRedirects] entry to DefaultEngine.ini mapping the old path to the new. Soft pointers using the old path automatically resolve to the renamed asset.

You rename SM_Sword to SM_LongSword via the editor. The redirector is created automatically. Two weeks later someone “cleans up” redirectors. Soft pointers in your data tables and Blueprints now return null because the redirector is gone.

Two Persistence Options

1. Redirector .uasset: editor-managed, automatic on rename. Lives at the old path; points to the new. Easily deleted by mistake.

2. CoreRedirect ini entry: explicit text config. Survives any asset cleanup. Recommended for important renames.

Add a CoreRedirect

; DefaultEngine.ini
[CoreRedirects]
+PackageRedirects=(OldName="/Game/Items/SM_Sword",NewName="/Game/Items/SM_LongSword")
+ClassRedirects=(OldName="BP_OldEnemy",NewName="BP_NewEnemy")
+PropertyRedirects=(OldName="BP_Player.OldHealth",NewName="BP_Player.MaxHealth")

PackageRedirects for whole-asset renames. ClassRedirects for class renames. PropertyRedirects for field renames. Add when you rename and commit; never delete unless you also resave every referencing asset.

Resave to Bake Redirects

After adding a redirect, run:

UnrealEditor.exe MyProject.uproject -run=ResavePackages -PackageFolder=Content

Resaves every asset using the new resolved paths. Once committed, the redirect can be removed — assets reference the new name directly.

Avoid Soft Pointer Surprises

Verifying

Add a redirect for a known-renamed asset. In a fresh editor instance, LoadSynchronous on a soft pointer using the old path. Should return the new asset. Without the redirect, returns null.

“Renames break soft pointers unless you add a redirect. Either commit the redirector or write a CoreRedirect — one of the two.”

Adopt a policy: every rename gets a CoreRedirects entry in the same PR. Future cleanups can’t accidentally break references.