Agent skill · Audited from source

codex-subagent

skill · am-will/codex-skillsLicence not declaredAudited 21 Oct 2026 · source 31eb89d791f0

★ 1,037pushed 98 days ago
✕BLOCKGrade F · 57/100 · 12 findings · 31eb89d
1,037repo stars · whole am-will/codex-skills

Is it safe? No — BLOCK, grade F (57/100). We read this skill's source at commit 31eb89d791f0 and observed filesystem, network and shell access and a hard-coded secret (see the findings). The audit raised 12 findings, 3 critical or high. What it does: A fast Rust-based headless browser automation CLI with Node.js fallback that enables AI agents to navigate, click, type, and snapshot pages via structured commands.

Ask an AI about this pageGChatGPTCClaudePPerplexityGeGeminiXGrok
More
Cite

Cite this page

ModelsAtlas. “codex-subagent (am-will/codex-skills)”. Retrieved 21 Oct 2026. https://modelsatlas.com/skills/am-will/codex-subagent

Blocked. The page stays public so you can check this skill if someone recommended it to you. The audit found 3 critical or high findings, starting with “Hard-coded secrets” in hooks/aitmpl-codex/security/secret-scanner/.codex/hooks/secret-scanner.py:103. Do not install it without reading them.

Trust audit

Audit 0.4.1 · source read 21 Oct 2026

Trust score57/100✕BLOCK F
1 critical2 high1 medium8 low0 info

BLOCK means the audit found something that could harm you or your machine. Grade F is shared by 105 of 14,816 audited skills.

What the source does

  • FilesystemDeclared1 observation
  • NetworkDeclared11 observations
  • ShellDeclared4 observations
  • DependenciesNot pinnedSome versions float
  • SecretsFoundSee the findings; values are never shown

Five audit layers

LayerWhat we checkResultFindings
L0 ProvenanceRepo owner, licence, archive status, activityPASS2
L1 Static sourceSecrets, path traversal, supply chain, hidden codeFAIL5
L2 InstructionsPrompt injection, authority framing, hidden directivesPASS5
L3 InventoryThe files and declarations match the sourcePASS0
L4 SandboxRun in isolation and watch behaviourSKIPPED why0

Gates applied: critical finding, no behavioural pass, no license.

Findings (12)

CRITICALHard-coded secretssecret.private_key · hooks/aitmpl-codex/security/secret-scanner/.codex/hooks/secret-scanner.py:103
F-03 Hard-coded secretsCWE-798 · CWE-321Layer L1
(r'…', '…', '…'),
Why
No further detail recorded for this rule.
Fix
—
HIGHHard-coded secretssecret.db_uri · agents/devops-cloud-infra/devops-cicd-expert.toml:147
F-03 Hard-coded secretsCWE-798 · CWE-321Layer L1
DATABASE_URL: postgresql://…@localhost:5432/testdb
Why
No further detail recorded for this rule.
Fix
—
HIGHHard-coded secretssecret.db_uri · agents/devops-cloud-infra/devops-cicd-expert.toml:362
F-03 Hard-coded secretsCWE-798 · CWE-321Layer L1
- DATA…://…@db:5432/myapp
Why
No further detail recorded for this rule.
Fix
—
MEDIUMNetwork egressnet.raw_ip · skills/llm-council/scripts/ui_server.py:76
F-04 Network egressCWE-200 · CWE-319Layer L1
return f"http://127.0.0.1:{self.server_address[1]}/?token={self.token}"
Why
No further detail recorded for this rule.
Fix
—
LOWInventory / provenanceinv.hidden_file · .codex
F-13 Inventory / provenanceCWE-1104Layer L0
.codex
Why
hidden member outside the usual dotfiles
Fix
review its purpose
LOWInventory / provenanceinv.no_license
F-13 Inventory / provenanceCWE-1104Layer L0
Why
no LICENSE file and no repo licence
Fix
add a licence
LOWSupply chainsupply.unpinned · package.json
F-08 Supply chainCWE-829 · CWE-1357Layer L1
@am-will/codexskills, @remotion/google-fonts, @remotion/transitions
Why
3 dependency range(s) float
Fix
pin exact versions or ship a lockfile
LOWPrompt injectionprompt.transfer_instruction · hooks/aitmpl-codex/README.md:28
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
- `automation/discord-detailed-notifications` - direct - Send detailed Discord notifications with session information when Codex finishes. Includes working directory, session duration, and system info
Why
an instruction to move sensitive data to an outside destination
Fix
remove; a skill never needs the user's secrets off the machine
LOWPrompt injectionprompt.transfer_instruction · hooks/aitmpl-codex/README.md:29
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
- `automation/discord-error-notifications` - adapted - Send Discord notifications when Codex encounters long-running operations or when tools take significant time. Helps monitor productivity and catc
Why
an instruction to move sensitive data to an outside destination
Fix
remove; a skill never needs the user's secrets off the machine
LOWPrompt injectionprompt.transfer_instruction · hooks/aitmpl-codex/README.md:30
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
- `automation/discord-notifications` - adapted - Send Discord notifications when Codex finishes working. Requires DISCORD_WEBHOOK_URL environment variable. Get webhook URL from Discord Server Settings
Why
an instruction to move sensitive data to an outside destination
Fix
remove; a skill never needs the user's secrets off the machine
LOWPrompt injectionprompt.transfer_instruction · hooks/aitmpl-codex/README.md:34
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
- `automation/slack-notifications` - adapted - Send Slack notifications when Codex finishes working. Requires SLACK_WEBHOOK_URL environment variable. Get webhook URL from Slack App settings -> Incomin
Why
an instruction to move sensitive data to an outside destination
Fix
remove; a skill never needs the user's secrets off the machine
LOWPrompt injectionprompt.transfer_instruction · hooks/aitmpl-codex/README.md:35
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
- `automation/telegram-detailed-notifications` - direct - Send detailed Telegram notifications with session information when Codex finishes. Includes working directory, session duration, and system in
Why
an instruction to move sensitive data to an outside destination
Fix
remove; a skill never needs the user's secrets off the machine

Audit 0.4.1 · source sha 31eb89d791f0 · 21 Oct 2026Report an issue or request a re-scan

Provenance

Who published it, and what the verdict is pinned to

  • Publisheram-will GitHub userOwner of the repository this skill is read from
  • Source folderam-will/codex-skillsThe exact folder we audited
  • LicenceNot declaredAs the repository states it
  • Commit pinned for this verdict31eb89d791f0A new audit runs when the source changes
  • Repository statusNot archivedLast push 98 days ago
  • Sandboxed runNot runSkills are read, not executed; layer L4 is skipped

What it tells the agent

Full source on GitHub ↗

Its description: A fast Rust-based headless browser automation CLI with Node.js fallback that enables AI agents to navigate, click, type, and snapshot pages via structured commands.

---
name: Agent Browser
description: A fast Rust-based headless browser automation CLI with Node.js fallback that enables AI agents to navigate, click, type, and snapshot pages via structured commands.
read_when:
  - Automating web interactions
  - Extracting structured data from pages
  - Filling forms programmatically
  - Testing web UIs
metadata: {"clawdbot":{"emoji":"🌐","requires":{"bins":["node","npm"]}}}
---

# Agent Browser

A fast Rust-based headless browser automation CLI with Node.js fallback that enables AI agents to navigate, click, type, and snapshot pages via structured commands.

## Installation

### npm recommended

```bash
npm install -g agent-browser
agent-browser install
agent-browser install --with-deps
```

### From Source

```bash
git clone https://github.com/vercel-labs/agent-browser
cd agent-browser
pnpm install
pnpm build
agent-browser install
```

## Quick Start

```bash
agent-browser open example.com
agent-browser snapshot
agent-browser click @e2
agent-browser fill @e3 "[email protected]"
agent-browser get text @e1
agent-browser screenshot page.png
agent-browser close
```

## Using Real Chrome Profile (for OAuth/Logged-in Sessions)

For sites requiring Google/Discord/etc login (like star-swap.com):

**Method 1: Launch Chrome with custom profile, connect via CDP**

```bash
# Terminal 1: Launch Chrome with your real profile and remote debugging
google-chrome --remote-debugging-port=9222 --user-data-dir=/home/willr/.config/google-chrome/Default &

# Terminal 2: Connect agent-browser to that Chrome instance
agent-browser --cdp 9222 open "https://star-swap.com"
agent-browser --cdp 9222 snapshot -i
agent-browser --cdp 9222 click e2

# This reuses your existing Google session - no re-login needed!
# Works for: Google OAuth, Discord OAuth, any site you're logged into in Chrome
```

**Method 2: Session persistence (first-time manual login)**

```bash
# First time: headed mode, login manually
agent-browser --headed --session starswap open "https://star-swap.com"
# Complete Google OAuth manually in the browser window
# Close when done

# Future runs: cookies persist!
agent-browser --session starswap open "https://star-swap.com"
# Already logged in automatically
```

**am.will.ryan Chrome profile:** `/home/willr/.config/google-chrome/Default`

## Core Commands

### Navigation

```bash
agent-browser open <url>
agent-browser back
agent-browser forward
agent-browser reload
```

### Interaction

```bash
agent-browser click <sel>
agent-browser dblclick <sel>
agent-browser focus <sel>
agent-browser type <sel> <text>
agent-browser fill <sel> <text>
agent-browser clear <sel>
agent-browser press <key>
agent-browser keydown <key>
agent-browser keyup <key>
agent-browser hover <sel>
agent-browser select <sel> <val>
agent-browser check <sel>
agent-browser uncheck <sel>
agent-browser drag <src> <tgt>
agent-browser upload <sel> <files>
```

### Extraction and Info

```bash
agent-browser snapshot
agent-browser get text <sel>
agent-browser get html <sel>
agent-browser get value <sel>
agent-browser get attr <sel> <attr>
agent-browser get title
agent-browser get url
agent-browser get count <sel>
agent-browser get box <sel>
agent-browser screenshot [path]
agent-browser pdf <path>
```

### Check State

```bash
agent-browser is visible <sel>
agent-browser is enabled <sel>
agent-browser is checked <sel>
```

### Find Elements

- agent-browser find role <role> <action> [value]
- agent-browser find text <text> <action>
- agent-browser find label <label> <action> [value]
- agent-browser find placeholder <ph> <action> [value]
- agent-browser find alt <text> <action>
- agent-browser find title <text> <action>
- agent-browser find testid <id> <action> [value]

Actions include click, fill, check, hover, and text.

### Wait and Timing

```bash
agent-browser wait <selector>
agent-browser wait <ms>
agent-browser wait --text "Welcome"
agent-browser wait --url "**/dash"
agent-browser wait --load networkidle
```

### Advanced Control

```bash
agent-browser scroll <dir> [px]
agent-browser scrollintoview <sel>
agent-browser eval <js>
agent-browser mouse move <x> <y>
agent-browser cookies
agent-browser storage local
agent-browser tab new [url]
agent-browser frame <sel>
agent-browser dialog accept [text]
```

## Sessions

Run multiple isolated browser instances.

```bash
agent-browser --session agent1 open site-a.com
agent-browser --session agent2 open site-b.com
```

## Snapshot Options

The snapshot command supports filtering to reduce output size.

- agent-browser snapshot -i
- agent-browser snapshot -c
- agent-browser snapshot -d 3
- agent-browser snapshot -s "#main"

## Selectors and Refs

Refs provide deterministic element selection from snapshots. Use the @ref syntax.

```bash
agent-browser snapshot
agent-browser click @e2
```

## Agent Mode

Use --json for machine readable output.

```bash
agent-browser snapshot --json
```

### Optimal AI Workflow

- Navigate with agent-browser open <url>
- Observe with agent-browser snapshot -i --json
- Act with @ref from the snapshot
- Verify with agent-browser snapshot

## Troubleshooting

- If the command is not found on Linux ARM64, use the full path in the bin folder.
- If an element is not found, use snapshot to find the correct ref.
- If the page is not loaded, add a wait command after navigation.
- Use --headed to see the browser window for debugging.

## Options

- --session <name> uses an isolated session.
- --json provides JSON output.
- --full takes a full page screenshot.
- --headed shows the browser window.
- --timeout sets the command timeout in milliseconds.

## Notes

- Refs are stable per page load but change on navigation.
- Always snapshot after navigation to get new refs.
- Use fill instead of type for input fields to ensure existing text is cleared.

Excerpt, first 5,797 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.

Install

Pinned to the audited commit 31eb89d

npx skills add am-will/codex-skills --skill <skill-name> -g
npx skills add am-will/codex-skills --skill <skill-name> -a claude-code -g
npx skills add am-will/codex-skills --list
npx skills add am-will/codex-skills --skill planner --skill context7 -g

Commands as the repository documents them: shown, never run by us. Our verdict covers commit 31eb89d791f0 only.

Works in which agents?

What its own text says, not a test

AgentStatusMore
Claude CodeMentioned in its text, not testedSkills for Claude Code · About Claude Code
CodexMentioned in its text, not testedSkills for Codex · About Codex
CursorMentioned in its text, not testedSkills for Cursor · About Cursor
Gemini CLIMentioned in its text, not testedSkills for Gemini CLI · About Gemini CLI
“Mentioned” means the skill’s text names the agent. We have not run it there.

Audit history

Every audit, every source change

  1. ✕BLOCK F 57 / 100

    first audit · source 31eb89d791f0

README badge

For maintainers · shows the latest audit

ModelsAtlas: BLOCK FMODELSATLASBLOCK · F
[![ModelsAtlas: BLOCK F](https://modelsatlas.com/skills/am-will/codex-subagent/badge.svg)](https://modelsatlas.com/skills/am-will/codex-subagent/)

The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.

Similar skills

Add this badge to your README

[![ModelsAtlas: BLOCK F](https://modelsatlas.com/skills/am-will/codex-subagent/badge.svg)](https://modelsatlas.com/skills/am-will/codex-subagent/)

Questions about codex-subagent

Is codex-subagent safe to install?
No — not without reading the findings first. The audit graded it F (57/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What can codex-subagent access on my machine?
The audit observed that it reaches the network, runs shell commands and reads or writes files. Each of those is consistent with what it says it does. Secrets in the source: found — see the findings.
Which assistants does codex-subagent work with?
Its documentation mentions claude-code, codex, cursor and gemini-cli. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (31eb89d791f0), read on 2026-10-21. The repository is watched, and a new audit runs when it changes — this is the first audit.

Sources

Spotted something wrong? Report a correction · Methodology

Keep going in your AI

Opens with this page as the source. We add nothing else to the prompt.