Mac color picker Screen Recording permission: fix the right state
A picker that returns no color is not always blocked. First tell a cancelled system sampler from denied screen access, then change only the state that failed.
The short answer: if the system color sampler appeared, you pressed Escape or clicked away, and no recovery alert followed, screen access was already available and the pick was cancelled. If TeenyColor shows its screen-access recovery alert without returning a color, open System Settings, Privacy & Security, Screen & System Audio Recording, enable TeenyColor, then quit and reopen it.
Disclosure: I build teenycolor. Its current Swift code checks screen-capture access before opening Apple's NSColorSampler. It converts a selected color to sRGB, copies your chosen format, and keeps local history. This article is the TeenyColor spoke for the TeenyApps Mac app permissions troubleshooting checklist.
Read the result before changing permission
| What happened | What it means | Next action |
|---|---|---|
| The sampler appeared, you pressed Escape or clicked away, and no recovery alert followed | Screen access was already available, but no color was selected. | Trigger another pick. Do not reset screen access for a cancelled action. |
| TeenyColor showed its screen-access recovery alert | The sampler returned no color and screen access was unavailable before it opened. | Open the named Settings pane, enable TeenyColor, then quit and reopen it. |
| A new history row appeared and text reached the pasteboard | The permission and sampling path completed. | If the text looks wrong, check the selected format and sample point. |
| The switch is on, but the recovery alert still appears | The running app may still have the old access state. | Quit the menu bar app fully, reopen it, and repeat the same solid-color test. |
| The sampler works, but one target produces a surprising value | The issue is likely the sample point, rendering, or output format rather than permission. | Compare against a large solid color before diagnosing the original target. |
01Why the permission appears
Apple describes Screen and System Audio Recording as the place where you decide which apps and websites can access the screen and audio on your Mac. The name is broader than the color-picking job, which is why the prompt feels alarming.
A system-wide color picker is not sampling its own window. It is asking macOS for the color at a visible point on the screen. Apple's NSColorSampler documentation describes it as an object that displays the system color-sampling interface and returns the selected color to the app.
TeenyColor records the Boolean result of CGPreflightScreenCaptureAccess() immediately before it opens the sampler. That check reports whether screen access is available; it does not return screen contents. If the sampler later returns no color, TeenyColor uses that recorded state to decide whether to show a permission alert or treat the action as cancelled.
02Fix the permission without guessing
- Open System Settings.
- Go to Privacy & Security.
- Open Screen and System Audio Recording.
- Turn on permission for the color picker.
- Quit the color picker. Use the app menu or Activity Monitor if it is still running in the menu bar.
- Open the picker again.
- Sample a simple visible pixel before returning to the original target.
TeenyColor's picker does not request Accessibility, Full Disk Access, Files and Folders, or Automation. Do not grant those broader permissions to repair this color-sampling path.
03Verify history and the pasteboard
Use one easy target after changing permission. Open a solid color block or a screenshot with a large flat area. Trigger the picker and click once. A successful TeenyColor pick produces two pieces of evidence: the color appears as the newest history item and the selected text format is written to the pasteboard.
If both happened, screen access and sampling worked. Go back to the original target. If that target still gives a surprising value, inspect the sample point, scaling, antialiasing, compression, transparency, color profile behavior, or selected output format.
For screenshots and exported images, use the narrower guide to checking image color shift on Mac after export. For keyboard access to the picker, use the guide to setting a Mac color picker shortcut.
04Check the output format after permission is fixed
A permission fix only gets you back to sampling. It does not guarantee that the copied value is in the format you expected.
TeenyColor supports Hex, lowercase Hex, RGB, RGB decimal, HSL, HSB/HSV, SwiftUI Color, UIColor, and CSS rgba. The source converts the sampled color to sRGB, stores the picked color in local history, and writes the selected format to the macOS pasteboard. If you expected hex but pasted SwiftUI code, the picker worked and the format setting was wrong.
Use copy color codes on Mac when the next question is which format belongs in CSS, SwiftUI, UIKit, or design notes.
05Know what TeenyColor does not do
TeenyColor's color-picking path asks Apple's sampler for one selected color. The local implementation does not capture or save video, upload screen content, repair image color profiles, read hidden source values from a design file, or turn a compressed screenshot back into original asset data.
That limit is useful. If the visible exported image is what a client, support agent, or product reviewer will see, sampling the rendered pixel is often the right evidence. If you need file profile diagnosis, use ColorSync Utility or the exporting app. If you need process or system state evidence, use the matching utility for that job.
The broader TeenyApps hub, Mac app permissions troubleshooting checklist, covers adjacent permission failures such as alerts, login items, and utility settings.
Sources checked
- TeenyColor feature claims were checked against the TeenyColor homepage and local Swift source for
CGPreflightScreenCaptureAccess(),NSColorSampler, cancelled-pick handling, sRGB conversion, pasteboard copy, nine output formats, local history, hotkeys, and screen-access recovery messaging. - Apple Support: Control access to screen and system audio recording on Mac.
- Apple Developer Documentation: NSColorSampler.
- Apple Developer: What's new in AppKit, NSColorSampler example.
FAQ
Why does a Mac color picker need Screen Recording permission?
A system-wide color picker samples pixels outside its own window. macOS controls that kind of screen access through the Screen and System Audio Recording setting.
Does TeenyColor record my screen?
TeenyColor's color-picking path uses Apple's NSColorSampler to return one selected color, converts it to sRGB, copies the chosen format, and stores local history. The local implementation does not save video or upload screen content.
What should I test after granting Screen Recording permission?
Sample a simple solid color and confirm a new history row plus the expected pasteboard value. If the sampler appeared, you cancelled it, and no recovery alert followed, trigger another pick instead of resetting permission.