camofox-browser
Stealth Firefox browser server for agent-driven Google OAuth and bot-protected sites.
Skill by Daisuke134
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/daisuke134-camofox-browser
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend, testing, cloud, security
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Shell scripts
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/camofox-browser
What's inside
- Skill name
camofox-browser- Description
- Stealth Firefox browser server for agent-driven Google OAuth and bot-protected sites. REST API on :9377. Use whenever a target site rejects agent-browser/playwright due to fingerprint detection (Google login, reCAPTCHA, Cloudflare). Wraps Camoufox (Firefox fork with C++-level fingerprint spoofing). Required for Anicca to login to Printful, Stripe Connect, Slack admin, Shopify, etc. via Google OAuth without human input after first 2FA. Cookie/storage persistence per (userId, sessionKey).
- License
- MIT
- Metadata
- tags: browser, automation, stealth, google-oauth, bot-bypass, camoufox, firefox
- Instructions
- 111 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
- Instructions call the network
Files (5)
- SKILL.md
- fetch.sh
- cf.sh · scripts/
- start.sh · scripts/
- stop.sh · scripts/
SKILL.md (first lines)
# camofox-browser
Stealth browser server. **Use this for any login/OAuth flow that fails on agent-browser** (Chrome for Testing fingerprint detected by Google).
Repo: https://github.com/jo-inc/camofox-browser
Source: `~/Developer/camofox-browser/`
Server: `:9377`
Profile dir: `~/.camofox/profiles/<userId>/<sessionKey>/`
Logs: `/tmp/camofox.log`
## Start (lazy, idempotent)
```bash
bash $LIFE_MANAGER_REPO/skills/camofox-browser/scripts/start.sh
# starts only if not running, prints health, exits
```
## Stop
```bash
bash $LIFE_MANAGER_REPO/skills/camofox-browser/scripts/stop.sh
```
## Standard call pattern
Every call needs `userId` + `sessionKey` (cookie/storage isolation per logical user).
```bash
# Default: userId=anicca, sessionKey=default. Override per skill if needed.
USER_ID="anicca"
SESSION_KEY="default"
# 1. Open tab (creates camofox tab, navigates URL)
TAB_ID=$(curl -sS -X POST http://localhost:9377/tabs \
-H 'Content-Type: application/json' \
-d "{\"url\":\"https://example.com\",\"userId\":\"$USER_ID\",\"sessionKey\":\"$SESSION_KEY\"}" \
| jq -r .tabId)
# 2. Snapshot (accessibility tree with @e1..@eN refs)
curl -sS "http://localhost:9377/tabs/$TAB_ID/snapshot?userId=$USER_ID&sessionKey=$SESSION_KEY"
# 3. Click element by ref
curl -sS -X POST "http://localhost:9377/tabs/$TAB_ID/click" \
-H 'Content-Type: application/json' \
-d "{\"ref\":\"e2\",\"userId\":\"$USER_ID\",\"sessionKey\":\"$SESSION_KEY\"}"
# 4. Type into element
curl -sS -X POST "http://localhost:9377/tabs/$TAB_ID/type" \
-H 'Content-Type: application/json' \
-d "{\"ref\":\"e1\",\"text\":\"$BROWSER_LOGIN_EMAIL\",\"userId\":\"$USER_ID\",\"sessionKey\":\"$SESSION_KEY\"}"
# 5. Press key (Enter, Tab, etc.)
curl -sS -X POST "http://localhost:9377/tabs/$TAB_ID/press" \
-H 'Content-Type: application/json' \
-d "{\"key\":\"Enter\",\"userId\":\"$USER_ID\",\"sessionKey\":\"$SESSION_KEY\"}"
# 6. Screenshot
curl -sS "http://localhost:9377/tabs/$TAB_ID/screenshot?userId=$USER_ID&sessionKey=$SESSION_KEY" \
-o /tmp/snap.png
# 7. Close tab
curl -sS -X DELETE "http://localhost:9377/tabs/$TAB_ID?userId=$USER_ID&sessionKey=$SESSION_KEY"
```
Use `bash $LIFE_MANAGER_REPO/skills/camofox-browser/scripts/cf.sh` as a thin wrapper (loads `userId`/`sessionKey`, sets `TAB_ID` env).
## Google OAuth login pattern (verified 2026-05-08)
```
1. Navigate https://accounts.google.com/signin/v2/identifier?... → email field
2. Type email → click Next → Google may ask for passkey
3. Click "Try another way" → "Enter your password"
4. Type the password from the user's secret store (never from this repository)
5. Google asks 2-step verification → click "Tap Yes on your phone or tablet"
6. The user completes any provider-required trusted-device prompt
7. Session lands at target site, cookie persists in ~/.camofox/profiles/<userId>/<sessionKey>/
8. Future runs reuse cookie — no human re-auth needed
```
## When to NOT use camofox
- Site has API + token: use API (Stripe, Printful, Resend, GitHub, Postiz, Slack via Composio MCP)
- Site has no bot detection: use agent-browser (Tokyo Comedy Bar, Uber Eats Manager scrape, kashispace)
- Need Google services (Gmail/Calendar/Drive): use `gog` CLI
## Endpoints
| Endpoint | Use |
|----|----|
| `POST /tabs` | open new tab + navigate (returns tabId) |
| `GET /tabs/{id}/snapshot` | accessibility tree with refs |
| `POST /tabs/{id}/navigate` | navigate same tab to new URL |
| `POST /tabs/{id}/click` | click ref |
| `POST /tabs/{id}/type` | type into ref |
| `POST /tabs/{id}/press` | press key (Enter/Tab/...) |
| `GET /tabs/{id}/screenshot` | PNG bytes |
| `POST /tabs/{id}/scroll` | scroll |
| `GET /tabs/{id}/extract` | structured JSON via JSON Schema + x-ref |
| `GET /sessions/{userId}/cookies` | export Netscape cookies for session |
| `POST /sessions/{userId}/cookies` | import cookies |
| `GET /tabs?userId&sessionKey` | list tabs |
| `DELETE /tabs/{id}?userId&sessionKey` | close tab |
Full OpenAPI: http://localhost:9377/openapi.json
Interactive: http://localhost:9377/docs
## Reporting
Report final external output (Stripe charge id / Printful order id / etc.), not "I navigated to X". Internal Slack reports OK as secondary, but never primary.From Daisuke134/life-manager, MIT.
More from Daisuke134/life-manager
- 0.631score
capafy-autopublish
Daisuke134
THE single skill to publish profitable, rejection-proof skills to the Capafy marketplace end-to-end, verification-baked.
SkillAFreshness: A★ 8Claude Code +9 - 0.628score
anicca-warmup-flip
Daisuke134
Daily loop that seeds Postiz warmup dates, promotes accounts to live after seven days, and reports every promotion to Telegram.
SkillAFreshness: A★ 8Claude Code +9 - 0.628score
anicca-life-manager
Daisuke134
Push-type AI 電話 エージェント。Google Calendar + 位置情報 + Bland.ai/Twilio + AgentMail で、user (Dais / OSS buyer) の人生を 全管理。出発時刻に電話 (RELENTLESS until 動く)、遅刻時に 謝罪 mail 自動…
SkillAFreshness: A★ 8Claude Code +9 - 0.628score
marketplace-core
Daisuke134
Build an apply loop for a new gig marketplace.
SkillAFreshness: A★ 8Claude Code +9 - 0.627score
browser-foundation
Daisuke134
Use when a Life Manager loop drives a registered Chromium identity, needs TikTok login, message, or authenticated-identity readback, leases CDP tabs or…
SkillAFreshness: A★ 8Claude Code +9 - 0.626score
customer-renewal-evidence-brief
Daisuke134
Use when a customer-success or account team needs to turn buyer-pasted account signals into a renewal-preparation brief without inventing health, intent…
SkillAFreshness: A★ 8Claude Code +9 - 0.626score
newsletter-hook-lab
anicca
Turn a pasted newsletter brief, draft opening, and approved proof into subject-line options, preview text, and an evidence-bounded opening sequence.
SkillAFreshness: A★ 8Claude Code +9 - 0.624score
linkedin-post-hook-lab
anicca
Turn a pasted LinkedIn post brief, draft opener, and approved proof into evidence-bounded two-line hooks, a “see more” bridge, and a post-opening package.
SkillAFreshness: A★ 8Claude Code +9 - 0.624score
dissertation-discussion-humanizer
Daisuke134
Rewrite a pasted dissertation discussion chapter into clear, natural academic prose while preserving supplied results, limitations, and uncertainty.
SkillAFreshness: A★ 8Claude Code +9 - 0.624score
academic-limitations-editor
Daisuke134
Turn a pasted study limitations section into clear, proportionate academic prose without adding weaknesses, evidence, or claims that the author did not provide.
SkillAFreshness: A★ 8Claude Code +9 - 0.624score
academic-research-proposal-humanizer
Daisuke134
Revise a pasted research proposal into natural, evidence-preserving academic prose without adding claims, citations, methods, results, or institutional facts.
SkillAFreshness: A★ 8Claude Code +9 - 0.617score
affiliate
Daisuke134
Builds, runs, and migrates the Life Manager Affiliate Agent across macOS devices.
SkillAFreshness: A★ 8Claude Code +9
Signals
- Stars
- 8
- Forks
- 2
- Open issues
- 2,737
- Last commit (this folder)
- Sep 29, 2026 (29 days ago)
- Last release
- Aug 15, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/Daisuke134/life-manager
- Website
- aniccaai.com/lm
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Daisuke134
- 0.631score
capafy-autopublish
Daisuke134
THE single skill to publish profitable, rejection-proof skills to the Capafy marketplace end-to-end, verification-baked.
SkillAFreshness: A★ 8Claude Code +9 - 0.628score
anicca-life-manager
Daisuke134
Push-type AI 電話 エージェント。Google Calendar + 位置情報 + Bland.ai/Twilio + AgentMail で、user (Dais / OSS buyer) の人生を 全管理。出発時刻に電話 (RELENTLESS until 動く)、遅刻時に 謝罪 mail 自動…
SkillAFreshness: A★ 8Claude Code +9 - 0.628score
marketplace-core
Daisuke134
Build an apply loop for a new gig marketplace.
SkillAFreshness: A★ 8Claude Code +9 - 0.628score
anicca-warmup-flip
Daisuke134
Daily loop that seeds Postiz warmup dates, promotes accounts to live after seven days, and reports every promotion to Telegram.
SkillAFreshness: A★ 8Claude Code +9 - 0.627score
browser-foundation
Daisuke134
Use when a Life Manager loop drives a registered Chromium identity, needs TikTok login, message, or authenticated-identity readback, leases CDP tabs or…
SkillAFreshness: A★ 8Claude Code +9 - 0.626score
customer-renewal-evidence-brief
Daisuke134
Use when a customer-success or account team needs to turn buyer-pasted account signals into a renewal-preparation brief without inventing health, intent…
SkillAFreshness: A★ 8Claude Code +9
Cite this page
camofox-browser skill. Agent Mart. https://agentmart.dev/skills/daisuke134-camofox-browser (last updated 2026-10-24)