agentos.guide › blog
Hermes Camofox slots into your Agent OS as the browser your Hermes agent reaches for when ordinary Chromium gets turned away at the door.
It's the official Camofox plugin from Nous Research, and it drives Camoufox, a Firefox fork that spoofs its fingerprint at the C++ level.
The fastest way to set it up is to let your agent do the work, so this guide is mostly prompts you paste in.
If you'd like my team to help you decide which browser jobs to automate first, book a free SEO strategy session.
Your Agent OS already has Hermes' default browser, browser_exec, which drives a packaged Chromium over CDP.
Camofox adds a second lane: ten browser tools that talk to a Camofox server over REST, plus cookie import once an API key is set.
The plugin lives in the hermes-official-plugins repo, and the server comes from jo-inc/camofox-browser.
Hermes never installs or starts that server, so your first prompt has to.
| Piece | Where it runs | Who starts it |
|---|---|---|
| Camofox server | Your machine, port 9377 | You, or your agent via the terminal |
| Camoufox browser | Inside the server | The server, on first use |
| Camofox plugin | Inside Hermes | hermes plugins install camofox |
npm install && npm start.hermes plugins install camofox.CAMOFOX_URL=http://localhost:9377 in ~/.hermes/.env.camofox toolset in hermes tools, then run hermes camofox status.The first launch downloads Camoufox, which runs to hundreds of megabytes, so give it a few minutes.
Paste this into your Hermes chat and let it work through the steps:
Set up Camofox for this Hermes profile.
1. Clone https://github.com/jo-inc/camofox-browser into ~/camofox-browser, run npm install, then npm start in the background.
2. Wait until GET http://localhost:9377/health reports ok: true.
3. Run: hermes plugins install camofox
4. Set CAMOFOX_URL=http://localhost:9377 with: hermes camofox setup
5. Run hermes camofox status and show me the output.
Stop and tell me if any step fails. Don't change anything else.
If status reports the server as reachable, you're done with the plumbing.
Prefer containers? Ask the agent to run the image ghcr.io/jo-inc/camofox-browser:latest on port 9377 instead of the Node steps.
In that case, also have it set browser.camofox.rewrite_loopback_urls: true, because inside the container 127.0.0.1 points at the container itself.
One more line worth adding: set CAMOFOX_CRASH_REPORT_ENABLED=false if you'd rather the server didn't send its anonymised crash reports to GitHub Issues.
By default each session gets a random Camofox identity, so cookies vanish on restart.
Open ~/.hermes/config.yaml and set browser.camofox.managed_persistence to true.
Also set browser.restrict_evaluate to true.
Show me the changed lines, then run hermes camofox status again.
With persistence on, Hermes sends a fixed userId per profile, so each Agent OS profile gets its own browser identity.
The second line stops browser_console from running expressions that touch cookies, storage or network calls.
🔥 Want the full Agent OS with Hermes already wired up?
Inside the AI Profit Boardroom you get step-by-step video trainings, the installable Agent OS, four coaching calls a week and 3,400+ members building with it.
Some sites need a human at the login screen the first time.
Camofox handles that with a visible window, then a checkpoint so the login gets saved to disk.
I need to sign into a site by hand once.
1. Restart the Camofox server with CAMOFOX_INTERACTIVE=desktop.
2. Open https://example.com/login with browser_navigate and tell me when the window is up.
3. Wait for me to say "done".
4. Then stop the server gracefully (SIGINT, never kill -9) so the login is checkpointed.
5. Start it again with CAMOFOX_INTERACTIVE=off and confirm I'm still signed in.
Swap the example address for your own site.
Keep the visible window open until the site has fully loaded your account page, then reply "done".
Run this once per site that needs a person at the door, then let the agent reuse the session headless from then on.
The graceful stop matters: the plugin README says a force-kill drops any login that was never checkpointed.
If you've set CAMOFOX_ADMIN_KEY, a POST /stop with that key in the x-admin-key header checkpoints without stopping Node.
Already signed in somewhere in your everyday browser? Export a Netscape-format cookies.txt for that site, then:
Generate a key with: openssl rand -hex 32
Save it as CAMOFOX_API_KEY in ~/.hermes/.env and restart the Camofox server with the same CAMOFOX_API_KEY.
Copy ~/Downloads/site_cookies.txt to ~/.camofox/cookies/site.txt
Import the cookies from site.txt with browser_import_cookies, then open the site and tell me if I'm signed in.
Files must sit under ~/.camofox/cookies, and each one is capped at 5 MB and 500 cookies.
This is the prompt I'd put in your agent's standing instructions.
When you browse with Camofox:
- Never type a password with browser_type.
- Use browser_vault for every login. If browser_vault can't fill on this Camofox tab, stop and ask me.
- Ask me before any purchase, payment or message.
The reason is in the plugin README: Camoufox prints every filled field's value, so a typed password shows up in browser_snapshot.
A value the vault filled shows as «redacted-vault-secret» instead.
Vault fills on Camofox tabs arrived on 28 October 2026, in hermes-agent commit 0a93a234 and plugin commit 6f7d49b5.
No tagged release includes them so far.
v0.22.5, tagged on 23 October 2026, is still the newest, so a core on that tag can't fill passwords on Camofox.
On those older cores the plugin simply skips the vault registration, and Prompt 5's rule makes your agent stop and ask instead of typing.
Once you're on a core with the seam, the fill only targets a tab browser_navigate opened, only on an exact origin match, and only over a loopback or HTTPS CAMOFOX_URL.
Here's a simple shape for a daily browsing job in your Agent OS:
browser_navigate and reads them with browser_snapshot.Pages longer than the 15000 snapshot threshold come back trimmed, with the complete tree parked in a file for the agent to read in pieces.
Keep browser_exec as the default lane in your Agent OS for public pages that load without fuss.
It's quicker to start, needs no server, and brings browser_cdp and browser_dialog when a CDP endpoint is configured.
Route a job to Camofox when a site keeps refusing the agent, serves it a blank page, or needs a login you want kept on your own machine.
For plain lookups, the Hermes docs recommend web_search or web_extract over any browser, because they're faster and cheaper.
A simple rule to give your agent: try the cheapest tool first, and step up to Camofox only when the page pushes back.
Write that rule into the agent's standing instructions next to Prompt 5, so it applies to every chat.
Cron jobs and webhooks have nobody to answer a prompt.
The credential vault docs say saved local logins keep working there, but a locked password manager reports unavailable_in_this_session.
Card fills always ask first, and headless sessions are refused outright.
So save your logins from an interactive session before you schedule anything, and keep scheduled Camofox jobs read-only.
Give 1Password a service account token through OP_SERVICE_ACCOUNT_TOKEN if a scheduled job needs logins from it.
Bitwarden and a locked 1Password vault need someone at the keyboard, so unlock them during the day and leave the overnight runs to saved local logins.
Check each scheduled job's first few results by hand before you trust it to run unattended for a week.
The Hermes browser docs also note that existing Camofox setups from core migrate on update, so older scheduled jobs keep their settings.
📞 Want a plan for which agent jobs to run first?
Book a free SEO strategy session and my team will go through your site and the browser tasks worth automating.
Prefer to learn it inside the full Agent OS with the trainings? Get into the AI Profit Boardroom.
Yes, if it has terminal access. Prompt 1 has it clone the server, start it, install the plugin and run hermes camofox status.
Either managed_persistence is off, or the server was force-killed before cookies were checkpointed. Turn persistence on and always stop the server gracefully.
No. Typed passwords show up in browser_snapshot. Use browser_vault, and have the agent stop and ask if the vault can't fill.
Saved local logins keep working in cron jobs and webhooks, but card fills are refused there and a locked password manager reports it's unavailable.
None of the tagged releases yet. The fix landed on 28 October 2026, after v0.22.5 was tagged on 23 October.
Paste Prompt 1 now, turn on persistence with Prompt 2, and if you want hands-on help, book a free strategy session or join the AI Profit Boardroom to run Hermes Camofox.
About Julian
I'm Julian Goldie, an AI entrepreneur, SEO expert and the founder of the AI Profit Boardroom, which has 3,400+ members.
I help business owners scale with AI agents, automation and SEO.
My YouTube channel has 400,000+ subscribers, and I run Goldie Agency, a seven-figure SEO agency.
→ Hermes Agent Browser: 10-Minute Quick-Start (2026)
→ Best Browser For Hermes: My Agent OS Pick + 7 More
→ Hermes Agent SuperGrok: Run Grok In Your Agent OS
→ Hermes Agent Browser Use: Quick Start + 3 Real Routes
The installable system behind every guide on this site — dashboard, agents, memory and pipelines — updated as new tools land, with 3,400+ members and four coaching calls a week.
Join the AI Profit Boardroom →📺 Video notes + links to the tools 👉
🎥 Learn how I make these videos 👉