paperclipai/paperclip · error
HTTPS exposure failed: Tailscale MagicDNS hostname unavailab
Error message
HTTPS exposure failed: Tailscale MagicDNS hostname unavailable
What it means
HTTPS exposure setup reserved ports and then tried to resolve a Tailscale MagicDNS hostname, which failed. Without a hostname the exposure cannot build a public HTTPS URL, so the reservation is torn down and the exposure attempt fails.
Source
Thrown at server/src/services/workspace-runtime.ts:5622
try {
exposureHostname = await workspaceRuntimeExposureDeps.resolveHostname();
reservedExposure.status.hostname = exposureHostname;
reservedExposure.status.updatedAt = new Date().toISOString();
} catch {
await workspaceRuntimeExposureDeps.broker
.remove(runtimeId, reservedExposure.handle)
.catch(() => undefined);
// The reservation deliberately keeps the winning pair's in-process claim for
// the caller to release on stop/teardown. No runtime record exists yet, so
// that teardown path can never run for this pair — releasing the broker
// reservation alone would leave the claim held. A hostname outage would then
// burn one pair per attempt, and a retry storm inside the claim TTL would
// report the range exhausted rather than the real cause.
exposurePortPairClaims.release({
appPort: reservedExposure.appPort,
hmrPort: reservedExposure.hmrPort,
});
throw new Error("HTTPS exposure failed: Tailscale MagicDNS hostname unavailable");
}
}
const templateData = buildTemplateData({
workspace: input.workspace,
agent: input.agent,
issue: input.issue,
adapterEnv: input.adapterEnv,
port,
});
const serviceCwd =
port === identityPort
? identity.serviceCwd
: resolveConfiguredPath(renderTemplate(asString(input.service.cwd, "."), templateData), input.workspace.cwd);
const env: Record<string, string> = {
...sanitizeRuntimeServiceBaseEnv(process.env),
...input.adapterEnv,
} as Record<string, string>;
for (const [key, value] of Object.entries(renderRuntimeServiceEnv({ envConfig, templateData }))) {View on GitHub (pinned to a7e689b3c3)
Solutions
- Enable Tailscale MagicDNS on the tailnet and ensure this machine has a MagicDNS hostname, then retry the exposure.
- Use a non-Tailscale exposure method if MagicDNS cannot be enabled.
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at server/src/services/workspace-runtime.ts:5332 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of paperclipai/paperclip@a7e689b3c3 (2026-08-18).
Data as JSON: /api/errors/1a42d0bc65d92ca2.
Report an issue: GitHub.