tailscale-auth-browser
Register and log in to Tailscale via browser automation (OAuth/GitHub).
SKILL.mdtailscale-auth-browser/SKILL.md
GitHubTailscale Browser Registration Flow
Register and log in to Tailscale via browser automation (OAuth/GitHub).
Registration (new account)
Navigate to
https://tailscale.com/registerin the browser.Click the GitHub (or other SSO) login button.
If the GitHub Authorize button is disabled:
- Wait for the consent checkboxes to load.
- Use JavaScript to force-enable the button:
const btn = document.querySelector('button[data-testid="authorize-app"]') || document.querySelector('button[type="submit"]'); btn.disabled = false; btn.click();On the Tailscale device confirmation page, click "Connect".
- If the button doesn't respond to clicks, press Enter key or trigger via CDP:
// Find the connect/submit button and dispatch click event const btn = document.querySelector('button[type="submit"]'); btn.dispatchEvent(new MouseEvent('click', { bubbles: true }));
Known gotchas
- OAuth popup blocking — the GitHub login may open in a popup that gets blocked. Check if a tab was created separately.
- Disabled authorize button — the OAuth consent page sometimes renders the button in a disabled state; force-enable with JS.
- Device name — defaults to hostname (e.g.
chihmin-desktop); confirm before connecting. - Auth key alternative — if browser flow fails, generate an auth key from
https://tailscale.com/machine/<device>/authkeyin the admin console and usetailscale up --authkey=<key>.
Auth key method (fallback)
# Generate key from admin console, then:
tailscale up --authkey=<your-auth-key>
This bypasses browser OAuth entirely and is the most reliable method for headless servers.