Start here
What it asks for
A connection you press for, Accessibility when a click first needs it, and the asks of your sessions, which can open under their own rows.
LampBoard asks for nothing it has not explained first. The welcome window offers each thing on its own screen, and anything you skip there is asked for at the moment it is first needed, because a permission requested before you have seen what an app does is a permission you have no reason to grant.
What it asks of you
| What | What it does | If you refuse |
|---|---|---|
| The connection | A few lines in each agent's own configuration: ~/.claude/settings.json, and ~/.codex/hooks.json where Codex is present. They tell the panel when a session changes state. Existing entries are kept and a dated backup is written. | The column stays empty; nothing else works either. Undo: Disconnect… in Settings › Claude Code & Codex. |
| Accessibility | macOS calls it "controlling your computer". It is used for one thing: bringing the editor window of the row you clicked to the front. | The click still activates the editor, but cannot choose which window. You land wherever you were last. |
| Automation | Reading window titles, to tell your projects apart. One entry for System Events, plus one per terminal application whose tabs it has to select. | Same as above. |
| Notifications (optional) | Alerting you when a session needs you or stops. Asked when you turn alerts on, not before. | The panel still shows it; nothing pops up. |
Accessibility and Automation are needed together. Without them the click falls back to open -b, which brings the editor to the front without raising the right window. You will find them in System Settings, under Privacy & Security, in two different panes: Accessibility, and Automation › lampboard › System Events. Settings › Clicks & keys shows whether Accessibility is granted, with Grant… beside it.
When a session asks you
A session that needs a yes from you blinks amber. Clicking the row takes you to its window, where the question is.
With the helper installed and Answer permission prompts and questions turned on, in Settings › Acting from the panel, the question can come to the panel instead. It opens under the session's own row, on one line: what the call would do, and Deny and Allow.
- The buttons are inert for the first 0.6 seconds, so a click meant for something else never answers it.
- Once you have clicked the panel,
AandDanswer, andJandKmove a ring between the rows that wait. - Unanswered in 55 seconds, it goes back to the session's own dialog, and the line says so.
- What the call would do is read from the command's first line: a command that "deletes recursively" or "force-pushes", or "more lines unseen" when it goes on past that line; an edit's "−3 +5 lines". A red ⚠ beside the line marks the dangerous ones, and its tooltip says why. A fixed list of spellings, not a guarantee.
- A question Claude asks with two to four options waits the same way for 20 seconds, its options as buttons and on the digit keys.
Only what the engine would have asked you comes here: a call it allows or refuses by itself is never changed. The helper proves each ask with a key of its own and believes only an answer signed with it, so nothing else listening on that port can say allow.
An amber row with no line under it is a question the panel does not hold: its dialog is in its own window, and the click is the way there.
When the switch is on and the click still does nothing
macOS keys these authorizations on the signature, not on the name, so a build from source and a release leave separate records for the same app. Measured on one machine: four records for the same bundle identifier, of which the list showed one, switched on, while the running app held none of them.
Removing the visible row is not enough. Reset both and relaunch:
tccutil reset Accessibility com.lampboard.app
tccutil reset AppleEvents com.lampboard.app
pkill -x lampboard && open -a LampBoard
The relaunch is not optional. tccutil clears the records, but macOS keeps a running process's accessibility session open until it exits, so without it the app goes on holding what you just took away.
Then click a lamp and answer the request.
lampboard status reports the state of the two permissions separately.