Skip to content

Several alerts at once

How one panel holds many waiting connections, the waiting list, answering for a whole app, minimizing alerts and apps that quit.

Outbound 1.3.0 · Updated

An app that launches and reaches for a dozen servers is still one question in the panel. Outbound never opens a window per connection. One panel holds every waiting request, and a burst from one app stays one entry however many destinations it asks for.

When more than one app is waiting, and the panel is not showing a “rule was not saved” notice, a list appears on the left. It is titled Waiting and carries a badge with the total number of requests (“N requests waiting”). Each row shows the app’s icon, its name, the host it is asking about (or “DNS via (server)” for a name lookup, or the address), and, when that app has several requests waiting, how many.

Outbound connection question: Google Chrome wants to connect to accounts.google.com, with how long to remember the answer, which host and port it applies to, a countdown and Block and Allow, next to the queue of waiting apps
Example data.

Click a row to bring that app’s request forward. The list scrolls inside the panel.

Under the list: “Right-click an app to answer all of its requests.”

When more requests are waiting, the alert’s header has an N more… menu. It lists every waiting request under its app, with the server, port, protocol and direction, and choosing one brings it forward. The header also shows “Request X of Y” for the app in front.

When the alert in front belongs to an app that has more requests waiting, a bar under it shows “(N) more from (App)”, the note “One rule for any server”, and two buttons, Block All and Allow All. While that answer is applied the button reads “Allowing All…” or “Blocking All…”.

Answering all of them stores one rule for that program, for any destination, with the lifetime the pickers show. The app’s other waiting connections are then answered for that connection only. You get one summary: “Allowed 12 connections from Safari.” or “Blocked 12 connections from Safari.” Undo removes the new rule. After an allow, the note says it can’t recall traffic already let through. After a block, it says connections already blocked don’t come back. If some of the answers could not be saved, the summary adds “1 couldn’t be saved.” or “N couldn’t be saved.” If the filter has not reconnected yet, it says the filter applies them when it reconnects.

The row’s right-click menu uses different titles from the bar: Allow All from (App) and Block All from (App). Both are disabled while an answer for that app is already being applied.

Every paused connection holds a place in the filter. The filter keeps room for 512 paused connections in total, 64 from one program, and 128 open alerts. Anything beyond that is denied at once. It is not given the timeout action, because the connection is stored nowhere and nobody can answer it later. When that happened to an app that is still waiting, a strip on its alert says “1 more connection was blocked while this waited” or “N more connections were blocked while this waited”, and that app jumps to the front of the list.

The panel itself keeps at most 128 requests, so it does not retain every request the filter has already timed out or dropped.

The panel is centred on the screen that contains the pointer, or the main screen if that screen cannot be found, and only when it first appears: dragging it is not undone by the next update. It floats above other windows, joins every Space, and can appear over full screen. It has no close or zoom button. A request has to be answered, minimized, or left to its deadline. The window’s title is Outbound, and the title is hidden: the alert’s own header names the program.

The Minimize button in the alert’s header (⌘M) shrinks the alert to a small panel titled Minimized Alert that keeps counting down. Click it to bring the full alert back. The menu bar panel also shows how many connections are waiting, with an Answer button that does the same.

New requests join the queue while the alert is minimized. Deadlines keep running: an alert nobody decides still gets the timeout answer (When you don’t answer).

To have every new alert open this way, turn on Keep connection alerts minimized in Settings › Alerts.

Stop Countdown, beside the countdown, asks the filter for more time, once per connection. The connection then waits until the time shown, and then gets the answer the alert names. The minimized panel offers the same button.

If an app quits before you answer, its alert says “(App) quit before you answered.” Answering still makes a rule for next time. Dismiss All Terminated removes every alert whose app quit, and makes no rules. The minimized panel counts these alerts too.

Quitting the background agent takes every alert with it. The menu bar panel asks before it does that, and says what connections will get in the meantime. See When you don’t answer.