Claude
Skills
Sign in
Back

simpleauthflow-chrome-extension

Included with Lifetime
$97 forever

```markdown

Writing & Docs

What this skill does

```markdown
---
name: simpleauthflow-chrome-extension
description: Chrome extension that automates the ChatGPT OAuth registration and authorization flow with zero configuration required
triggers:
  - automate chatgpt oauth flow
  - chrome extension for chatgpt registration
  - simpleauthflow setup
  - automate openai account creation
  - chatgpt oauth chrome extension
  - simplify chatgpt authorization
  - automated chatgpt signup extension
  - chatgpt burner mailbox automation
---

# SimpleAuthFlow Chrome Extension

> Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection.

SimpleAuthFlow is a Chrome extension that automates the ChatGPT OAuth registration and authorization flow. It is designed for zero-configuration personal use — install it, point it at a local CPA instance, and it handles the entire signup/auth cycle automatically including email verification, CAPTCHA prompts, and protocol confirmation pages.

---

## What It Does

- Automates the full ChatGPT OAuth flow (registration + authorization)
- Uses Burner Mailbox for disposable email addresses — no personal email needed
- Handles email verification codes automatically
- Detects and auto-confirms OpenAI agreement/protocol pages
- Supports semi-automatic mode: manually handle one step, auto-continue the rest
- Provides a **Workflow** panel with step-by-step controls and a **Continue** button for resuming interrupted flows
- Works with a local [CPA](https://github.com/) instance at `http://127.0.0.1:5173/#/oauth` by default

---

## Prerequisites

1. **CPA** — the OAuth callback/proxy service, running locally (default: `http://127.0.0.1:5173/#/oauth`)
2. **This extension** — loaded as an unpacked Chrome extension

No personal email address or phone number is required.

---

## Installation

### Load the Extension (Developer Mode)

```bash
# 1. Clone the repository
git clone https://github.com/NyxTides/SimpleAuthFlow.git
cd SimpleAuthFlow

# 2. Open Chrome and navigate to:
#    chrome://extensions/

# 3. Enable "Developer mode" (top-right toggle)

# 4. Click "Load unpacked"

# 5. Select the SimpleAuthFlow project folder
```

### Start CPA Locally

```bash
# Example: start CPA on default port 5173
cd /path/to/cpa
npm install
npm run dev
# CPA now listens at http://127.0.0.1:5173/#/oauth
```

---

## Using the Extension

### Basic Flow

1. Click the extension icon in the Chrome toolbar to open the side panel.
2. The VPS/CPA URL field is pre-filled with `http://127.0.0.1:5173/#/oauth`. Leave it as-is for local use.
3. Click **Auto** to start the automated flow.
4. The extension will:
   - Obtain a disposable email from Burner Mailbox
   - Register a new ChatGPT account
   - Fetch verification codes from the inbox
   - Confirm any OpenAI protocol/agreement pages
   - Complete the OAuth callback to CPA

### Workflow Panel Controls

| Button | Behavior |
|---|---|
| **Auto** | Start the full automated flow from the beginning |
| **Continue** | Resume from the last successful step (skips already-completed steps) |
| **Stop** | Immediately halt the current flow at any point |
| Individual step buttons | Click any step directly to run it in isolation (supports manual handoff) |

### Semi-Automatic Mode

If the automated email chain fails (e.g., Burner Mailbox triggers a CAPTCHA):

1. Click **Stop** to pause.
2. Manually complete the problematic step (e.g., solve CAPTCHA in the email tab, retrieve the code yourself).
3. Click the **next step button** in the Workflow panel to continue automation from that point.
4. Or click **Continue** — it resumes from the last confirmed successful step.

---

## Configuration

### VPS/CPA URL

The input field in the side panel accepts the CPA OAuth endpoint. Default value:

```
http://127.0.0.1:5173/#/oauth
```

Toggle visibility of the URL with the eye icon (👁) next to the input field.

### Rate Limits (Default Behavior)

- ~1 minute per complete flow
- ~5 flows per day on a single IP/request environment (same node = same fingerprint)
- To exceed 5/day: switch your proxy/VPN node and continue

No config file changes are needed to adjust this — it is an upstream site limitation based on IP + request headers.

---

## Key Internal Behaviors

### Email Retry Logic

```
- Wait 4 seconds for new email to arrive
- If no email detected → auto-trigger resend
- Retry up to 3 rounds before marking as failed
- Most flows succeed on the first attempt
```

### Security Verification (CAPTCHA) Handling

When Burner Mailbox shows a human verification page:

1. Extension detects the security check page.
2. Side panel displays a prompt: **"Please complete the verification in the email tab."**
3. User solves the CAPTCHA manually.
4. User clicks **Continue** in the side panel.
5. Extension waits for the page to return to normal, then resumes.

### OpenAI Agreement Page

If OpenAI injects a "please agree to terms" or "confirm to continue" interstitial:

- Extension automatically detects it.
- Clicks through without interrupting the flow.
- No user action required.

---

## Code Examples

### Injecting a Step Handler (content script pattern)

```javascript
// content/steps/confirmAgreement.js

/**
 * Detects and auto-confirms OpenAI protocol/agreement pages.
 * Returns true if handled, false if page not detected.
 */
async function confirmAgreementIfPresent() {
  const continueBtn = document.querySelector(
    'button[data-testid="accept-terms-button"], button.continue-btn'
  );
  if (!continueBtn) return false;

  console.log('[SimpleAuthFlow] Agreement page detected, confirming...');
  continueBtn.click();

  // Wait for navigation away from the agreement page
  await waitForNavigation(3000);
  return true;
}

function waitForNavigation(timeout = 3000) {
  return new Promise((resolve) => {
    const start = location.href;
    const interval = setInterval(() => {
      if (location.href !== start) {
        clearInterval(interval);
        resolve();
      }
    }, 200);
    setTimeout(() => {
      clearInterval(interval);
      resolve();
    }, timeout);
  });
}
```

### Sending a Stop Signal from the Side Panel

```javascript
// sidepanel/index.js

document.getElementById('stop-btn').addEventListener('click', () => {
  chrome.runtime.sendMessage({ type: 'STOP_FLOW' }, (response) => {
    console.log('[SimpleAuthFlow] Stop acknowledged:', response);
  });
});
```

### Handling Stop in the Background Service Worker

```javascript
// background/worker.js

let flowActive = false;

chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
  if (message.type === 'STOP_FLOW') {
    flowActive = false;
    sendResponse({ stopped: true });
  }

  if (message.type === 'START_FLOW') {
    flowActive = true;
    runFlow().catch(console.error);
    sendResponse({ started: true });
  }
});

async function runFlow() {
  const steps = getSteps(); // returns ordered step functions
  for (const step of steps) {
    if (!flowActive) {
      console.log('[SimpleAuthFlow] Flow stopped by user.');
      break;
    }
    await step();
  }
}
```

### Continue from Last Successful Step

```javascript
// sidepanel/workflow.js

/**
 * Finds the index of the last successful step and resumes from the next one.
 */
function continueFromLastSuccess(steps, stepStatuses) {
  let lastSuccess = -1;

  for (let i = 0; i < steps.length; i++) {
    if (stepStatuses[i] === 'success') {
      lastSuccess = i;
    }
  }

  const resumeFrom = lastSuccess + 1;

  if (resumeFrom >= steps.length) {
    console.log('[SimpleAuthFlow] All steps already completed.');
    return;
  }

  console.log(`[SimpleAuthFlow] Resuming from step ${resumeFrom}: ${steps[resumeFrom].name}`);
  runStepsFrom(steps, resumeFrom);
}
```

### Email Retry with Backoff

```javascript
// content/steps/fetchVerificationCode.js

const MAX_RETRIES = 3;
const WAIT_MS = 4000;

async function fetchVerificationCode(triggerResendFn) {
  for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {
    console.log(`[SimpleAuthFlow] Wait

Related in Writing & Docs