Mac CPU and memory alerts not showing? Fix it
A missing system-monitor alert can be a delivery problem or an event that never qualified. Check macOS policy and TeenyStat's metric state separately.
The short answer: allow notifications, turn Focus off for one test, and confirm the exact metric's alert toggle and red threshold. TeenyStat can alert on its first authorized check if that metric is already red. After that, it will not alert again until the metric goes below red, crosses back into red, and that metric's 10-minute cooldown has expired.
Disclosure: I build teenystat. Its alerts are local macOS notifications tied to CPU usage, memory usage, and fan speed where fans are available. This article is the TeenyStat spoke for the TeenyApps Mac app permissions troubleshooting checklist.
Read the alert state before changing a threshold
| State | What TeenyStat does | Next check |
|---|---|---|
| Notification access is undecided or denied | It does not update crossing state or add an alert. | Allow notifications, then run one controlled metric test. |
| First authorized check is already at or above red | It treats the missing prior state as below and can fire once. | If nothing arrives, inspect delivery settings, Focus, and the metric toggle. |
| The metric remains red after an alert | It records an above-red state and does not repeat. | Wait for a below-red reading before expecting another rising edge. |
| The metric crosses red again inside 10 minutes | Cooldown suppresses the alert, but the metric is still recorded as above red. | After cooldown, let it go below red and cross again. |
| An alert is listed but no banner was noticed | The alert was added, but macOS delivery policy affected presentation. | Check alert style, Notification Center, Focus, sound, and previews. |
01Allow notifications before tuning thresholds
Apple's Notifications settings decide whether an app can show alerts, banners, sounds, badges, and Notification Center entries. If macOS denies notification permission, changing CPU and memory thresholds inside the app cannot fix the missing banner.
TeenyStat requests notification authorization when you enable an alert and permission has not already been decided. The source asks for alert and sound authorization through UNUserNotificationCenter. If permission is denied, the Settings view shows a recovery section with a button to open macOS notification settings.
Start there. Open System Settings, Notifications, choose teenystat, and allow notifications. Then decide whether you want banners, sounds, and Notification Center behavior.
Keeping the TeenyStat popover or Settings window open is not supposed to suppress the test. The app installs a foreground notification presenter that requests a banner, Notification Center list entry, and sound while it is active.
02Check Focus before blaming the app
Focus can make a working alert look broken. If Work, Do Not Disturb, Sleep, or a custom Focus is active, macOS may hide or delay the notification depending on your Focus settings.
Do one controlled test with Focus off. If the alert appears during that test, the TeenyStat event path is working. If the same alert later disappears while Focus is active, the remaining issue is notification delivery policy.
Put the threshold back after testing. Leaving a temporary low red line in place is how alert fatigue starts.
03Confirm the metric that should alert
TeenyStat has separate alert toggles for Fan Speed, Memory Usage, and CPU Usage. Turning on memory alerts does not mean CPU alerts will fire. Turning on CPU alerts does not help a fan-speed problem.
Match the alert to the signal you care about. If Xcode, video export, or a browser helper is pegging the processor, test CPU Usage. If swap or memory pressure is the concern, test Memory Usage. If fan ramp is the signal, test Fan Speed on a Mac that actually has fans.
The setup companion is Set Mac CPU and memory alert thresholds. Use that guide when the question is what the red line should be. Use this page when the alert did not appear.
04Remember edge-triggered alerts and cooldowns
TeenyStat does not send a new banner every polling interval while a metric stays above red. With no prior state, the first authorized check starts from an assumed below-red state, so an already-red metric can fire once. Every later alert needs a new below-to-red transition.
The 10-minute cooldown is separate for CPU, memory, and fan speed. One subtle case matters: if a metric crosses into red during cooldown, the alert is suppressed and the metric is still recorded as above red. Waiting out the clock is not enough. After cooldown, that metric must produce a below-red reading and then another red reading.
TeenyStat collects metrics every 3 seconds by default, so allow at least one collection interval between the below-red and red readings. This cadence is for system-load awareness, not real-time benchmarking.
05Use Activity Monitor after the alert path works
A working alert only tells you the signal crossed a line. It does not tell you which process caused it.
When an alert appears and you need evidence, open Activity Monitor. Apple's CPU view gives process-level CPU context. Apple's Memory view gives memory pressure, app memory, wired memory, compressed memory, cached files, and swap used.
That split matters. TeenyStat is the first glance. Activity Monitor is the diagnosis tool. If an alert sends you to Activity Monitor and you find nothing worth changing, raise the threshold or turn that alert off.
Controlled first-alert test
- Open System Settings, Notifications, and allow notifications for teenystat.
- Turn Focus off for the test.
- Choose one metric and set its red threshold above the current reading while its alert is off.
- Enable that metric's alert toggle.
- Wait at least one collection interval so TeenyStat records a below-red state.
- Lower the red threshold below the current reading, or create a workload that crosses it.
- Wait one more collection interval and check both the banner and Notification Center.
- Restore your real threshold after the result is recorded.
- If no alert appears, check authorization, Focus, delivery style, the selected metric, and whether a recent alert put that metric inside cooldown.
This procedure tests a first qualifying edge. Testing a repeat alert can take longer because the per-metric cooldown must expire before another below-to-red transition.
Sources checked
- TeenyStat feature claims were checked against the TeenyStat homepage and local Swift source for notification authorization, foreground banner/list/sound presentation, denied-permission recovery, per-metric crossing state, cooldown suppression, red thresholds, and 3-second default polling.
- Apple Support: Change notification settings for apps.
- Apple Support: Set up a Focus to stay on task on Mac.
- Apple Developer Documentation: UNUserNotificationCenter.
- Apple Support: View CPU activity in Activity Monitor on Mac.
- Apple Support: View memory usage in Activity Monitor on Mac.
FAQ
Why are my Mac CPU alerts not showing?
Check notification authorization, Focus, the CPU alert toggle, and the red threshold. The first authorized check at or above red can alert, but TeenyStat does not repeat while the metric remains red.
Why did TeenyStat alert once but not again?
TeenyStat records that the metric is already red after the first qualifying check. It must return below red before another rising edge, and at least 10 minutes must have passed since that metric's previous alert.
Can TeenyStat tell me which app caused the alert?
No. TeenyStat shows the first menu bar signal and alert. Use Activity Monitor when you need process names, CPU history, memory pressure, swap, or a process you can quit.