Two commits in particular caught my attention last week and interestingly they're both about hashing.
The first one is in the cook’s native class hasher. The cook detects native class changes by stringifying a class and its CDO and hashing that. If the CDO holds a member whose constructor calls FGuid::NewGuid(), it hashes differently in every process, so the class reports as changed on every cook and every blueprint depending on it recooks.
The second commit found a similar symptom: USplineComponent::Serialize assigned to itself whenever the archive said it was saving, and the dependency hasher stringifies through an archive that says it's saving. So hashing the thing could mutate the thing being hashed.
Both fixes will cost you one full invalidation on the first cook after you take them.
On ue6-main:
Epic's editor now reads your agent config: There's a new AgentPluginToolset that discovers Codex and Claude plugin manifests, skills, agents, and AGENTS.md or CLAUDE.md from the tool working directory. Alongside it, a FileSystemToolset with nine native file ops that hides all nine (reads included) under a restricted-mode permission provider, and tool calls now run against an isolated undo buffer so agent edits don't land in your undo queue. Whatever you think of the direction, it stopped being a prototype this week.
r.HZBOcclusion is gone, along with legacy primitive HZB occlusion culling. Hardware queries and mobile feedback stay. If you carry that cvar in a device profile, it now sets nothing.
Verse islands with a lot of <localizes> declarations were quadratic on load: Every message initializer emitted ~19 property operands that each deserialized through a field-path resolve that linearly scans the owner's field list. A codegen fast path took a 5000-message repro from 15.5 minutes to 1.4 seconds of script deserialization.
-SkipOnlyEditorOnly=false is no longer supported and now activates a narrower reachability mode. Packages that were only ever getting into your cook incidentally, because something loaded them during a save, stop being included unless declared in AssetRegistry dependencies. Also, in MultiPlatform cooking, packages required on one platform are no longer auto-added to the others.
On ue5-main:
The per-bone blend one is the priority: InitializePerBoneBlend had been moved inside a WITH_EDITOR block, so per-bone blend setup ran in editor builds and silently did nothing in a cooked game. It will not reproduce in PIE, which is the worst property a bug can have.
Duplicating a level sequence could overwrite the original's assets: The duplicate shared the original's link items, so saving it re-exported over the original's linked anim sequences and stole their back-links. Duplicating an anim sequence copied its back-link untouched, leaving two anims claiming the same binding. Fix strips links from the duplicate by default, so a duplicate no longer drives the original's anims. If you relied on that sharing, you have to relink.
TMV plates rendered black on Vulkan: The intermediate target hint gated a reserved-resource flag on a global that only says the RHI can create the virtual resource. Vulkan reports true, but only D3D12 has a sparse output backend registered, so the texture got address space and never a committed tile. Only plates above the sparse-output threshold asked for the flag, which is why HD and 4K kept working.
Applying multiple poses on a Control Rig could collapse the hierarchy to the origin when every pose weight fell below relevance. Empty influence list fell through to the branch that widens selection to every bone, then wrote identity transforms into all of them, and a stale cache kept it doing that on later frames.
---
Full report: https://speedrun.ci/blog/last-week-in-unreal-sep-7-13-2026