gildas-lormeau/SingleFile · info · Error

SingleFile is disabled for this URL

Error message

SingleFile is disabled for this URL

What it means

SingleFile throws this when the tab's URL resolves to a profile named DISABLED_PROFILE_NAME. It is an intentional guard in captureTab: per-URL options are loaded and if the user (or a rule) marked the URL as disabled, no capture is attempted. It signals the extension is configured to skip this URL, not a runtime failure.

Source

Thrown at src/core/bg/business.js:181

						options: tabOptions,
						method: "content.save"
					});
				} else {
					ui.onForbiddenDomain(tab);
				}
			}
		} else {
			ui.onForbiddenDomain(tab);
		}
	}));
	runTasks();
}

async function captureTab(tab, options = {}) {
	const tabId = tab.id;
	const tabOptions = await config.getOptions(tab.url);
	if (tabOptions.profileName == config.DISABLED_PROFILE_NAME) {
		throw new Error("SingleFile is disabled for this URL");
	}
	Object.assign(tabOptions, options, {
		silent: true,
		logsEnabled: false,
		progressBarEnabled: false,
		confirmFilename: false,
		confirmInfobarContent: false,
		openEditor: false,
		autoOpenEditor: false,
		openSavedPage: false,
		backgroundSave: false,
		saveToClipboard: false,
		saveToGDrive: false,
		saveToDropbox: false,
		saveWithWebDAV: false,
		saveWithMCP: false,
		saveToGitHub: false,
		saveWithCompanion: false,

View on GitHub (pinned to 517fb7c5cf)

Solutions

  1. Check the target tab's URL against your SingleFile rules and remove the disable rule if the capture is intended
  2. Pick a different profile for that URL pattern in the extension options
  3. In automation code, catch this error and skip the URL rather than retrying
  4. Verify tab.url is what you expect (redirects may land on a disabled URL)

Example fix

// before
await singlefile.captureTab(tab);
// after
try {
  await singlefile.captureTab(tab);
} catch (e) {
  if (e.message === 'SingleFile is disabled for this URL') return; // skip disabled URL
  throw e;
}
Defensive patterns

Strategy: try-catch

Validate before calling

const opts = await config.getOptions(tab.url);
if (opts.profileName === config.DISABLED_PROFILE_NAME) throw new SkipCapture();

Type guard

const isDisabled = (opts) => opts && opts.profileName === config.DISABLED_PROFILE_NAME;

Try / catch

try { await captureTab(tab, options); } catch (e) { if (e.message === 'SingleFile is disabled for this URL') return null; throw e; }

Prevention

When it happens

Trigger: Calling captureTab (directly or via the capture action/UI) on a tab whose URL maps, through config.getOptions and URL rules, to the disabled profile.

Common situations: Developers invoking the SingleFile API programmatically on pages the user disabled (e.g. browser internal pages, localhost, work URLs covered by a disable rule); capturing after rules changed so a previously-capturable URL is now disabled.

Related errors


AI-assisted analysis of gildas-lormeau/SingleFile@517fb7c5cf (2026-09-01). Data as JSON: /api/errors/4e3191e4ed931920. Report an issue: GitHub.