Since updating to macOS 27.2, the built-in battery charge limit feature no longer works reliably. I have observed the same behavior on two different MacBooks: an M5 Pro and an M1 Pro. (I've never used a third-party program just the factory limiter.)
What I have noticed is that if the MacBook remains powered off for an extended period, after turning it back on it appears to "forget" the configured charge limit. The Battery settings menu still shows the previously selected limit (85% in my case), but the system charges the battery to 100% anyway.
The issue only goes away if I manually select 85% again and then restart the MacBook. After the restart, the charge limit works correctly once more. However, if I later try to change the limit, the new value is not applied. The system seems to remain stuck at the previous setting (85%). If I set it back to 100%, the charging limit is removed correctly, but from that point onward selecting any other limit (for example 85% again) has no effect unless I restart the MacBook. Only after the restart is the selected limit applied.
When the issue occurs and 85% is still displayed in Battery settings, the following Terminal command returns:
xy..$pmset -g battlimit
No battery level limits set
This indicates that no battery charge limit is actually configured, even though the Battery menu still shows one.
After I reselect the desired limit and restart the MacBook, the correct limit immediately appears:
xy..$pmset -g battlimit
Battery level limits:
(
{
Terminated = 0;
chargeSocLimitDrain = 1;
chargeSocLimitIsEOC = 1;
chargeSocLimitNoChargeToFull = 0;
chargeSocLimitOwner = 206;
chargeSocLimitReason = manualChargeLimit;
chargeSocLimitSoc = 85;
},
{
Terminated = 0;
chargeSocLimitDrain = 1;
chargeSocLimitIsEOC = 1;
chargeSocLimitNoChargeToFull = 0;
chargeSocLimitOwner = 0;
chargeSocLimitReason = manualChargeLimit;
chargeSocLimitSoc = 85;
}
)
The charge limit then works correctly until either:
- the MacBook is powered off for an extended period, or
- I attempt to modify the charge limit setting again.
In both cases, the issue returns, and the limit must be reconfigured and followed by a restart before it is applied correctly again.