setup

A guided setup command for connecting a ProofHub plugin to ProofHub, a project-management service. It checks the connection and configures the account subdomain and API key.

In plain words
What is it for?
Use it to diagnose authentication, collect ProofHub credentials, save them locally, and verify that the server works.
Why use it?
It helps resolve missing credentials and launch-environment problems while keeping the API key out of chat and tracked files.

Command

Part of the proofhub plugin — 3 commands, 1 MCP server 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 commands/yashmody/proofhub-mcp/setup
Clone the repo
git clone --depth 1 https://github.com/yashmody/proofhub-mcp

Or install proofhub, the plugin that ships this one along with the rest of its 3 commands, 1 MCP server.

Per session 11 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 654 The whole file, excluding the scripts and references it only reads on demand.
Security scan D 3 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.00011 $0.00654
Opus 5 $0.00005 $0.00327
Sonnet 5 $0.00002 $0.00131
Haiku 4.5 $0.00001 $0.00065

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

Security

Grade D, and why

setup scanned grade D with 3 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 the agent to reveal its instructionsmediumSystem prompt leakage

Directions to print, repeat or translate the system prompt extract configuration the operator did not intend to expose.

do the work for them — don't just print instructions. Never echo the API key back in chat or

Harvests environment variableshighData exfiltration

Enumerating or grepping the environment for keys collects credentials unrelated to what the mod says it does.

## 2. Collect credentials

Asks for rootmediumPrivilege escalation

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

writes `~/.config/proofhub/config.json` at chmod 600.)
commands/setup.md · 58 lines

How it starts

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

You are helping the user get the ProofHub MCP server working end-to-end. Be concise and do the work for them — don't just print instructions. Never echo the API key back in chat or write it into any git-tracked file.

1. Diagnose what's already there

  • Run the bundled diagnostic: node "${CLAUDE_PLUGIN_ROOT}/bin/proofhub.js" doctor (If ${CLAUDE_PLUGIN_ROOT} isn't set, find it: the file lives under ~/.claude/plugins/cache/proofhub-mcp/proofhub/*/bin/proofhub.js.)
  • If it prints "OK — authenticated", ProofHub is already configured. Confirm the tools work by calling proofhub_list_projects, tell the user it's working, and stop here.
  • If PROOFHUB_ACCOUNT / PROOFHUB_API_KEY show MISSING, continue.

2. Collect credentials

If $1 / $2 were passed, use them as the account subdomain and API key. Otherwise ask the user for:

  • Account subdomain — the xxx in xxx.proofhub.com.
  • API key — ProofHub → avatar → Settings → API.

This is the launch-independent path — it works whether Claude Code is started from a terminal or the macOS Dock/Finder (the Dock does NOT source ~/.zshrc, which is the usual reason ${PROOFHUB_API_KEY} resolves empty and ProofHub returns WRONG ACCESS TOKEN, code 1001).

Read the project's .claude/settings.local.json (create {} if missing) and merge an env block — do not clobber existing keys:

{
  "env": {
    "PROOFHUB_ACCOUNT": "<subdomain>",
    "PROOFHUB_API_KEY": "<key>"
  }
}

First verify .claude/settings.local.json is gitignored (git check-ignore .claude/settings.local.json). It normally is. Never put the key in .claude/settings.json — that file is committed.

(Alternative, any terminal, no restart needed for the CLI: node "${CLAUDE_PLUGIN_ROOT}/bin/proofhub.js" login --account <subdomain> --key <key> writes ~/.config/proofhub/config.json at chmod 600.)

4. Restart and verify

  • Tell the user to fully quit and reopen Claude Code (Cmd/Ctrl-Q) so the MCP server picks up the new environment — a reload is not enough.
  • After restart: run /mcp to confirm the proofhub server is connected, then call proofhub_list_projects to confirm auth. proofhub doctor also re-checks from the CLI.

Read the full file on GitHub · 58 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 · 58 lines · 11 tokens per session scan D dfcebb757a22

Subscribe to this mod's changes

setup is a command published in the GitHub repository yashmody/proofhub-mcp (0 stars, last pushed 2mo ago), licensed MIT. It adds 11 tokens to every session and 654 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it D with 3 findings (asks the agent to reveal its instructions, harvests environment variables, asks for root). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.