Agent Economy Report

Skill code audit

CAUTION version 1.0.0 · audited 2026-09-09

model-usage @steipete

This skill summarizes local AI usage costs per model by calling the third-party `codexbar` command-line tool and formatting its JSON output. The bundled Python script either runs `codexbar cost --format json --provider codex|claude` with a fixed, non-user-controlled argument list, or reads a JSON file/stdin that the user points it at. All processing happens locally: it parses daily cost rows, adds up cost per model, and prints text or JSON to the console. There is no network activity, no reading of credentials or environment variables, no file writing by the script, and no persistence or install-and-run-arbitrary-code behavior. The only external installation step is a declared Homebrew cask for CodexBar (macOS only), which is a separate tool that reads local Codex/Claude session logs. Nothing in the package attempts to override agent rules or send data anywhere.

Declared purposeSummarize per-model usage cost from CodexBar's local cost logs for Codex or Claude, either the current (most recent) model or a full breakdown, with text or JSON output.
Observed behaviorRuns a single fixed subprocess (`codexbar cost --format json --provider <codex|claude>`), or reads JSON from a user-specified file or stdin, aggregates per-model costs, and prints a text or JSON summary to stdout. Errors go to stderr. No other side effects in the code.
Verdict, rules onlyCAUTION · runs subprocesses or eval/exec
Verdict, AISAFE
Final verdictCAUTION (never better than either pass)

Capabilities

capabilityvs purposedetail
shellneededscripts/model_usage.py line 27 runs `subprocess.check_output` on a hardcoded argument list (`codexbar cost --format json --provider <provider>`), with the provider restricted to 'codex' or 'claude' by argparse choices (line 238). No shell=True, no user-supplied string concatenated into a command.
filesystem_readneededscripts/model_usage.py line 46 opens the file path given by the user's `--input` flag to read cost JSON. It reads no other paths. Indirectly, the external CodexBar tool reads local session logs under ~/.codex and ~/.claude (documented in references/codexbar-cli.md lines 25-27).
install_packagesneededSKILL.md line 4 metadata declares a Homebrew cask install of `steipete/tap/codexbar` to provide the required `codexbar` binary. This is a declared, named third-party dependency, not a silent download-and-execute.

Findings

severityfinding
infoExecutes the external codexbar CLI with a fixed argument list
The only subprocess call in the package. The command is built at line 25 as a list with hardcoded arguments and a provider value constrained to 'codex' or 'claude', so there is no shell interpretation or command-injection path.
scripts/model_usage.py:27 output = subprocess.check_output(cmd, text=True)
infoReads only the user-specified input file
File reading is limited to the path passed via `--input` (or stdin when '-'). The script never writes files and never reads credential stores or environment variables.
scripts/model_usage.py:46 with open(input_path, "r", encoding="utf-8") as handle:
lowDeclares installation of a third-party Homebrew cask
Installing the skill may prompt installation of CodexBar from a personal Homebrew tap (steipete/tap). The cask is named and visible, but its contents are outside this package and are not audited here; CodexBar itself reads local Codex/Claude session logs.
SKILL.md:4 metadata: {"clawdbot":{"emoji":"📊","os":["darwin"],"requires":{"bins":["codexbar"]},"install":[{"id":"brew-cask","kind":"brew","cask":"steipete/tap/codexbar","b
infoUnderlying tool reads local session transcripts
Documentation states CodexBar computes costs from JSONL session logs in ~/.codex/sessions and ~/.claude/projects. These logs can contain conversation content; this skill only consumes the aggregated cost JSON, and no code here uploads anything.
references/codexbar-cli.md:25 - Cost usage is local-only. It reads JSONL logs under:
infoDocumentation example writes a temp file
The only 'file write' in the package is an example shell command in the docs that redirects cost JSON to /tmp/cost.json. The script itself performs no writes.
SKILL.md:35 codexbar cost --provider codex --format json > /tmp/cost.json

0 AI finding(s) were dropped because their file, line or quote did not match the package.

Network destinations in the code

domainservice ratingwhere
clawhub.ainot in the service indexskill-card.md:7

Other facts

Binaries invokedbash, python, python3
Environment variables readnone
Hard-coded walletsnone
Pipes a download to a shell0
eval / exec / subprocess3
base64 blobs0
File writes1
Persistence0

Files audited

filelinessha256
SKILL.md4570e8c1c96f7c1475…
_meta.json6fd78c28404d3a046…
references/codexbar-cli.md28fae370637e2a6523…
scripts/model_usage.py310502dcda47466a4ab…
skill-card.md42ef08bb672cc5dc37…

For agents

JSON: https://agenteconomy.report/k/model-usage.audit.json · badge: https://agenteconomy.report/k/model-usage.audited.svg · skill rating: /k/model-usage · commission an audit of any skill: US$ 29 per version.

How this is computed

The complete published package of this exact version was downloaded from the registry and read statically; nothing was executed. A deterministic pass extracts network destinations, binaries, environment variables, writes, install commands, obfuscation markers, subprocesses and wallets, each with file and line. An AI then reads the whole package with those facts and writes the summary, the capabilities and the findings under a strict schema; every finding it produces must cite a file, a line and the exact text, or it is dropped. The final verdict is the worst of the two passes. The audit does not change the skill's trust tier (policy); the author may respond through the dispute channel and the response is published here. Commissioned by: the Agent Economy Report (free program: the 150 most downloaded skills, September 2026).