Macbook Pro M4 Max 128GB RAM, OS 26.0.1. -> Kensington TB4 Docking Station, LG 49W-L59C Monitor (attached via USBC to Docking Station).
With me everything Thunderbolt (I have a Thunderbolt 4 Dock by Kensington that has been the MBP's primary companion since I brought it home) takes random dumps flapping disconnect/connect after upgrading to OS 26. As others say, undesired behavior stops if you reboot with the TB4 dock connected, or if you leave it alone for a while with the lid open and just wait it out for a *very* long time (1/2h or more, every flap seemingly "lasting longer" on until I feel I can finally close the lid). Open or closed lid doesn't matter (though closed lid goes to sleep eventually).
It flaps all my TB peripherals back and forth as well, so it's the connection dock-Macbook, not USBC monitor-dock. It's insane and it was all working perfectly before the upgrade.
Setup works well with other devices including an non-upgraded Macbook Air M2 I also own.
You can claim "now we perfect video with no dropped frames" all you want, but graceful degradation on regular usage really is table steaks expected behavior in 2025 (and that it "eventually fixes itself" with lid open suggests a software bug, not cables). Submitted a bug and everyone who can reproduce should as well.
I write software (but not Kernel stuff). Here's a log around one of the flip-flaps (filtered by IOThunderboltSwitch) in case interested Apple devs see this.
default 16:31:54.565680-0700 kernel 130796819157us IOThunderboltSwitch(0@1)::finalize - terminate device: Kensington TB4 Docking Station (047d:809b:01) (8087:0b26:03)
default 16:31:55.780139-0700 kernel 130798033610us IOThunderboltSwitch(0@0)::processPlugEvent - Thunderbolt HPD packet for rid = 0 route = 0x0 port = 2 plug = 1
default 16:31:55.780402-0700 kernel 130798033873us IOThunderboltSwitch(0@0)::processPlugEvent - Thunderbolt HPD packet for rid = 0 route = 0x0 port = 1 plug = 1
default 16:31:55.895400-0700 kernel 130798148869us IOThunderboltSwitch(0@1)::syncTargetAndNegotiatedWidth - port (0@0:2) - bonding took 0 ms
default 16:31:55.895863-0700 kernel 130798149332us IOThunderboltSwitch(0@0)::processPlugEvent - Thunderbolt HPD packet for rid = 0 route = 0x0 port = 2 plug = 0
default 16:31:55.907162-0700 kernel 130798160632us IOThunderboltSwitch(0@1)::processPlugEvent - Thunderbolt HPD packet for rid = 0 route = 0x1 port = 2 plug = 0
default 16:31:55.960740-0700 kernel 130798214209us IOThunderboltSwitchIntelJHL8440(0@1)::overrideSupportedCLxStates - clx = 0x00000000
default 16:31:55.961412-0700 kernel 130798214881us IOThunderboltSwitch(0@1)::configureCLx - (0x1 -> 0x1) supported = 0x7 common = 0x0 parent = 0x7 child = 0x0 options = 0x0 enable = 1 current = 0x0 target = 0x0 status = 0x00000000
default 16:31:55.993346-0700 kernel 130798246815us IOThunderboltSwitchIntelJHL8440(0@1)::overrideSupportedCLxStates - clx = 0x00000000
default 16:31:55.994040-0700 kernel 130798247510us IOThunderboltSwitch(0@1)::configureCLx - (0x1 -> 0x1) supported = 0x7 common = 0x0 parent = 0x7 child = 0x0 options = 0x0 enable = 1 current = 0x0 target = 0x0 status = 0x00000000
default 16:31:56.004702-0700 kernel Sandbox: ThunderboltAccessoryUpdaterServi(1256) allow iokit-get-properties iokit-class:IOThunderboltSwitchType7 property:Router ID
default 16:31:56.144109-0700 kernel 130798397578us IOThunderboltSwitchIntelJHL8440(0@1)::overrideSupportedCLxStates - clx = 0x00000000
default 16:31:56.144807-0700 kernel 130798398275us IOThunderboltSwitch(0@1)::configureCLx - (0x1 -> 0x1) supported = 0x7 common = 0x0 parent = 0x7 child = 0x0 options = 0x0 enable = 1 current = 0x0 target = 0x0 status = 0x00000000
default 16:31:56.594343-0700 kernel 130798847808us IOThunderboltSwitch(0@1)::processPlugEvent - Thunderbolt HPD packet for rid = 0 route = 0x1 port = 13 plug = 1
default 16:31:56.691675-0700 kernel 130798945140us IOThunderboltSwitchIntelJHL8440(0@1)::overrideSupportedCLxStates - clx = 0x00000000
default 16:31:56.692414-0700 kernel 130798945879us IOThunderboltSwitch(0@1)::configureCLx - (0x1 -> 0x1) supported = 0x7 common = 0x0 parent = 0x7 child = 0x0 options = 0x0 enable = 1 current = 0x0 target = 0x0 status = 0x00000000
While cable changes may work for others, it hasn't been the case for me. My cables are new T5/80Gb cables (I already paid for a maxed out M4 Max, what's a TB cable?)
What sucks is that every other laptop including my Linux laptops of a huge range of versions and generations all work and behave beautifully with this exact setup... but what's by far the most expensive machine I've ever bought, decides to take random dumps now. It's just frustrating and makes me feel like I wasted my money here (when I know a crappy bus implementation when I use one; I mean, I have windows machines too).
I really hope they fix this. Soon. It's not okay since it hits me at least 2x/day as I move around with my laptop as one does.
Good luck everyone, hope any of this helps.