The Never-Suspend List: Sites You Always Keep Open
The never-suspend list is your set of protected sites. Any tab whose address matches an entry is skipped by every sweep. Add a bare hostname to protect a whole site, or a hostname with a path to protect one section.
Why it matters
You don't want every tab suspended. Some sites are critical to your day: email, messaging, a tool you're actively using. The never-suspend list is your permanent exception list. Scalpel checks it on every sweep, before the inactivity timer, so your protected sites never get discarded no matter how long they sit.
It's the foundation of using Scalpel without losing important tabs.
How it works
The list is just a collection of hostname patterns, stored in your Chrome sync storage. During every suspension sweep, Scalpel runs through every tab and compares its URL to each pattern in the list.
If a tab's address matches an entry, it's protected. If not, the inactivity timer applies (unless the tab is also pinned, audible, or has unsaved input).
The list is the first check, even before the pause switch. If you pause Scalpel, the never-suspend list still applies; if you pause the sweep, manual suspend and restore still work.
The list syncs across devices if you're signed into Chrome. Add a site on your laptop, and it's protected on your phone's Chrome profile too.
What does not matter
The list doesn't affect tabs that are already suspended; it only protects tabs from being suspended in the first place. If you suspend a protected site by hand (using the "suspend this tab" button), it will stay suspended until you restore it.
The list doesn't speed up or slow down suspension. Checking each tab takes microseconds, so even a list of hundreds of sites has no measurable impact.
You can't use wildcards or regular expressions in the list. Patterns are simple: bare hostnames or hostname-plus-path. See the patterns page for the full grammar.
Code example
Here's how Scalpel applies the never-suspend list during a sweep:
// During the suspension sweep
const tabs = await chrome.tabs.query({ windowType: 'normal' });
const neverSuspendList = await getStoredList('neverSuspendList');
for (const tab of tabs) {
if (isProtected(tab, neverSuspendList)) {
console.log(`${tab.title} is protected, skipping`);
continue;
}
if (isInactive(tab, inactivityTimer)) {
await chrome.tabs.discard(tab.id);
}
}
// Pattern matching
function isProtected(tab, patterns) {
const url = new URL(tab.url);
const hostname = url.hostname;
const pathname = url.pathname;
for (const pattern of patterns) {
if (pattern.includes('/')) {
// Hostname plus path
const [patternHost, patternPath] = pattern.split('/');
if (hostname === patternHost && pathname.startsWith('/' + patternPath)) {
return true;
}
} else {
// Bare hostname or subdomain
if (hostname === pattern || hostname.endsWith('.' + pattern)) {
return true;
}
}
}
return false;
}
How Scalpel shows it
Open Scalpel's settings and go to the "Never-Suspend List" tab. You'll see a text area where you can add or remove patterns one per line. You can also:
- Click "Never suspend this site" in the popup to add the current site with one click.
- Export your list as plain text and save it.
- Import a previously exported list or a list from another device.
- Edit patterns by hand if you need exact control.
The list updates instantly; changes are saved to Chrome sync automatically.