setup

An interactive setup skill for installing or reconfiguring a model-guard status line. A status line is text shown in the agent interface while it works.

In plain words
What is it for?
Use it to install or refresh the model-guard script, configuration, and status-line entry in the agent settings.
Why use it?
It collects display preferences and updates the required local files, while keeping a timestamped backup of the settings file.

Skill for Claude CodeCodex

Part of the model-guard plugin — 2 skills, 1 hook shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/ventusff/claude-model-guard/setup
Any agent
npx skills add ventusff/claude-model-guard --skill setup
Clone the repo
git clone --depth 1 https://github.com/ventusff/claude-model-guard

Made for: Claude Code, Codex.

Or install model-guard, the plugin that ships this one along with the rest of its 2 skills, 1 hook.

Per session 56 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,248 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 2 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00056 $0.01248
Opus 5 $0.00028 $0.00624
Sonnet 5 $0.00011 $0.00250
Haiku 4.5 $0.00006 $0.00125

Measured 2d ago against content hash 3b538cb62988, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade C, and why

setup scanned grade C with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Asks for rootmediumPrivilege escalation

A mod that escalates privileges can change anything on the machine, not only the project.

it (`sudo apt install jq` / `brew install jq` / `sudo pacman -S jq`), then exit.

Reads agent configuration directoriesmediumAgent snooping

.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.

description: Interactive setup for the model-guard statusline — asks two quick preference questions, copies the script, and registers the statusLine in ~/.claude/settings.json (with a timestamped backup). Safe to re-run
skills/setup/SKILL.md · 100 lines

How it starts

The opening of the file, as written. The whole thing — 100 lines — stays where its author put it; the contents beside it link to each section on GitHub.

model-guard: interactive setup

You are installing (or reconfiguring) the model-guard statusline for this user.

Plugin root: ${CLAUDE_PLUGIN_ROOT} (If the path above looks like an unexpanded shell variable instead of a real directory, locate the plugin root via claude plugin list --json or by finding */model-guard/scripts/statusline.sh under ~/.claude/plugins/.)

Target paths — use exactly these:

  • script: ~/.claude/model-guard.sh
  • config: ~/.claude/model-guard.conf
  • register: the statusLine key in ~/.claude/settings.json

Follow the steps in order. Keep your final report short.

1. Preflight (one Bash call)

  • command -v jqrequired. If missing, stop and tell the user how to install it (sudo apt install jq / brew install jq / sudo pacman -S jq), then exit.
  • Read ~/.claude/settings.json: note the current statusLine (if any) and the model field (used for auto-detecting the expected model — no question needed).
  • Read ~/.claude/model-guard.conf if it exists (this run is then a reconfigure — mention the current values inside the question descriptions below).

2. Ask preferences (ONE AskUserQuestion call)

Question 1 — header "Language", band text language:

  • "Auto (Recommended)" — follow Claude Code's language setting, fall back to English
  • "English"
  • "中文"
  • "More…" — description: also available: 日本語 · 한국어 · Español · Français · Deutsch · Português; type one via Other (conf values: ja / ko / es / fr / de / pt)

Question 2 — header "Account", show the logged-in account email on the band (useful when juggling multiple accounts):

  • "Show (Recommended)"
  • "Hide"

If settings.json already has a statusLine that is not model-guard, add Question 3 — header "Existing bar": "Replace (keep restorable backup)" / "Cancel setup". If the user cancels, stop cleanly.

3. Install files

  • Copy ${CLAUDE_PLUGIN_ROOT}/scripts/statusline.sh~/.claude/model-guard.sh, chmod +x it.
  • Write ~/.claude/model-guard.conf with the two answers, preserving any unrelated existing keys (SETUP_HINT, PREV_STATUSLINE_B64, EXPECTED_MODEL, SHOW_CONTEXT, LIMIT_WARN_AT):

Read the full file on GitHub · 100 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 100 lines · 56 tokens per session scan C 3b538cb62988

Subscribe to this mod's changes

setup is a skill published in the GitHub repository ventusff/claude-model-guard (1 stars, last pushed 29d ago), licensed MIT. It adds 56 tokens to every session and 1,248 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it C with 2 findings (asks for root, reads agent configuration directories). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.