Atlas / Skills / jackneil / claude-jacked

claude-jackedBLOCK

skills/jackneil/claude-jacked

Hit a Claude Code usage limit and jacked switches accounts for you. Multi-account manager and skills suite for Claude Code and Codex: live 5h/7d usage tracking, auto account-switching, a menu-bar app on macOS and system tray on Windows/Linux, plus 30 slash commands, 28 skills and 10 review agents fr

Verdict
BLOCK
Grade
F
Trust score
39 /100
Version
—
Hosts
8 documented
License
MIT
Stars
2
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

When you hit a Claude Code usage limit, jacked shows which account has headroom and helps you move deliberately instead of guessing which credentials a session is using. Run every Claude and Codex account you own as one fleet, watch each account's 5-hour, 7-day, and per-model usage live, and get an auto-swap recommendation before a limit stops you. The whole fleet stays one click away in a macOS menu-bar app, or a system-tray app on Windows and Linux.

It is also a skills manager for Claude Code: one jacked install deploys 20 curated slash commands, 28 skills, and 10 review agents into ~/.claude, mirrors them into Codex when Codex is installed, and keeps them updated from a web dashboard.

What you get: multi-account Claude Code, live usage tracking, and a skills suite

  • Run multiple Claude accounts without losing account truth. Add every account you own, watch each account's 5-hour, 7-day, and per-model usage live, and let auto-swap recommend a fresh account before you hit a limit. Credential changes report what was actually verified, and session cards distinguish where a session started, what configuration was later observed, and whether the provider runtime is still unverified. Works for Codex accounts too, side by side with Claude.
  • A menu-bar app that actually earns its pixels. A live pill shows usage for the account jacked can currently resolve next to the clock (18%·4%, tinted green/yellow/red). Left-click drops the whole fleet down in a compact panel: every account, every org, per-model caps, reset times, and the current credential state. Right-cl
Read from source at commit a49edf459ffeOBSERVED · 2026-10-10
02

Install

Commands as the repository documents them. They are shown, not run.

claude mcp add -s user chrome-devtools -- npx chrome-devtools-mcp@latest --autoConnect
claude mcp add -s user chrome-devtools -- npx chrome-devtools-mcp@latest --autoConnect
uv tool install claude-jacked   # tray icon + background service included by default
uv tool install claude-jacked --force   # pystray + Pillow ship in the base package
uv --version
uv tool install claude-jacked
03

Host compatibility

What the documentation claims. We have not run a compatibility test.

HostStatusNotes
claude-codementioned
claude-desktopmentioned
codexmentioned
copilotmentioned
cursormentioned
gemini-climentioned
openclawmentioned
windsurfmentioned
04

What it tells the agent

The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.

---
name: dcr
description: "Risk-tiered multi-lens review for this repo - the SMALL/MEDIUM/LARGE tier sets reviewer count and agent budget (4/8/16), findings are validated before fixing, and the run stops after two waves by default. (repo)"
---
# Generated by /jacked-setup — 2026-09-01 | Template v2 | Engine: jacked v0.96.0
# Commit this file. Its LARGE-tier, Codex, and conditional sections read ~/.claude/skills/dcr/references/ from the jacked install. To update: uv tool install --upgrade claude-jacked && jacked install && /jacked-setup dcr

## Repo Config

- **Project**: claude-jacked
- **Type**: CLI tool + local FastAPI service / dashboard (Python)
- **Stack**: Python (FastAPI, uvicorn, hatchling, pystray/rumps); SQLite via `jacked/web/database.py`; file-based Memory Vault under `jacked/memory/` (cross-process file locks, atomic rollups, Claude-hook capture/recall); integrates the Anthropic API and OAuth/credential flows

## Default Lens Selection
Always on: Guardrails, Security, Access Control, Data Integrity & Schema Safety, Observability & Debuggability, Logic & Edge Cases, Testing, Maintainability, Simplicity & Reuse
Usually off: UX & Flow (turn ON when the change touches the `jacked/data/web/` dashboard), Performance (turn ON for the sweep / usage-monitor / bulk-refresh paths)
(Still allow runtime override — if changes clearly involve an "off" lens, include it.)

## Planning Phase Lenses
When reviewing a plan or design doc (PLANNING phase, no code changes yet):
Use: Guardrails, Logic & Edge Cases, Maintainability, Simplicity & Reuse
Skip: Security, Access Control, Performance, UX & Flow, Testing, Observability & Debuggability, Data Integrity & Schema Safety (can't assess without code)
Reviewers focus on: missing edge cases in the design, over-engineering, architectural soundness, plan completeness. Repo emphasis: any auth/account/hook design must be checked for multi-account credential isolation and for hook-content trust boundaries (transcript/session text is untrusted input).

## PROJECT_CONTEXT Paths
Read these for reviewer context (validate with `ls` first, skip missing):
- `CLAUDE.md`, `JACKED_GUARDRAILS.md`, `lessons.md`
- `design/guardrails_and_lint_gate.md`
- `design/memory-vault-design.html`
- `docs/architecture/oauth-and-credential-flows.md`, `docs/architecture/auto-swap-system.md`

## Domain Wild Cards
In addition to the standard pool, include:
- Do changes to the hook scripts under `jacked/data/hooks/` (memory_capture, memory_recall, session_account_tracker, qa_suggest, chain_of_command_context) keep the recall trust boundary — no untrusted transcript/session content re-injected as instructions, and no hook failure that blocks or corrupts the user's Claude session?
- Does it keep multi-account credentials isolated — no token, session, or usage data from one Claude/Codex account leaking into another (or into the wrong dashboard card)?
- Does it honor the repo's uv-only rule (no bare `pip`/`python`; use `uv run` / `uv pip`) and the code-size guardrail?
- Does it degrade gracefully headless — when the tray/menubar or a display is unavailable, does the service still run?

## Domain Pre-Mortem Scenarios
In addition to the standard pool, include:
- A credential or usage token from one account leaks into another account's session, or the dashboard renders the wrong account's data.
- Two concurrent Claude sessions write the Memory Vault at once and a settings merge wipes user settings or corrupts the vault (the recent DCR-wave bug class: settings-wipe, lock contract, rollup atomicity).
- The background service fails to bind `:8321` after an upgrade/restart (launchd KeepAlive race) and the dashboard silently goes dark.
- A skill/command/hook install writes into the wrong `~/.claude` or `~/.agents` location and clobbers or duplicates a user's existing config.

## Sensitive Areas
Touching any of these forces the LARGE risk tier (full reviewer fan-out):
- OAuth/credential flows and account switching — tokens, keychain access, credential detection, anything under `jacked/web/` touching auth or account identity
- `jacked/data/hooks/` — hook scripts inject content into user Claude sessions (trust boundary: transcript/session text is untrusted input)
- Memory Vault write paths (`jacked/memory/`) — cross-process file locks, atomic rollups, user data loss risk
- SQLite schema changes in `jacked/web/database.py` or any migration logic

## Config Staleness Check
Before using the config above, run a lightweight drift check (advisory only — never block on it):
1. `git rev-parse HEAD` and compare to **Generated at commit** below.
2. `ls package.json pyproject.toml go.mod Cargo.toml setup.py Gemfile pom.xml build.gradle composer.json mix.exs 2>/dev/null` and compare the manifest set to **Detected stack** below.
3. If EITHER differs, count the intervening commits (`git rev-list --count <generated-commit>..HEAD 2>/dev/null`) and surface one line, then continue:
   > ⚠️ This `/dcr` config was generated N commits ago and the stack/paths may have drifted — re-run `/jacked-setup dcr` to refresh.
   If the generated commit is unreachable (history rewritten) or the manifest set changed, surface the nudge regardless of commit count. Never stop or skip the run on a staleness mismatch.

<!-- Staleness fingerprint — the engine compares these against the live repo on each run -->
- **Generated at commit**: 938c956d03edb6720fc4e5adbad117b3cdca9bce
- **Detected stack**: pyproject.toml

<!-- ENGINE — DO NOT EDIT BELOW THIS LINE -->

## BUDGET FIRST

The RISK TIER sets how wide the review goes and the agent budget caps it. Nothing later in this file widens either.

### RISK TIER

Classify the change under review into ONE tier. Sensitivity beats size: a 20-line auth change is LARGE. When genuinely torn between tiers, take the higher one.

- **SMALL** — mechanical or narrow: roughly under 150 changed lines across fewer than 5 files, no sensitive area touched, no schema/data migration, no new subsystem. Typical:
05

Trust audit

BLOCKgrade F · trust 39/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (7 observation(s))
Network
declared (9 observation(s))
Shell
declared (3 observation(s))
Dependencies
pinned
Secrets in source
found

Findings (25)

HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
jacked/skill_listing.py:355
data = yaml.load(block, Loader=_bounded_loader())  # noqa: S506 - SafeLoader subclass
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
.claude/skills/dcr/SKILL.md:48
- OAuth/credential flows and account switching — tokens, keychain access, credential detection, anything under `jacked/web/` touching auth or account identity
Why it matters. asks the agent to read credentials
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
.claude/skills/qa/SKILL.md:178
If the app requires authentication to access the areas being tested, search for credentials in `.env` files before asking the user.
Why it matters. asks the agent to read credentials
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
.claude/skills/ux/SKILL.md:326
If the app requires authentication to access the areas being tested, search for credentials in `.env` files before asking the user.
Why it matters. asks the agent to read credentials
HIGHPrompt injection · prompt.hidden_comment · CWE-94, CWE-1427
jacked/data/skills/lockdown/SKILL.md:1097
The audit reads content from the audited repo into Claude's context: `cat .npmrc`, `cat .yarnrc.yml`, `head -5 requirements.txt`, scanner JSON output, finding descriptions, etc. A malicious repo could
Why it matters. directive hidden in a comment the user does not see rendered
Fix. remove the comment
HIGHPrompt injection · prompt.hide_from_user · CWE-94, CWE-1427
jacked/data/commands/cleanup.md:24
- **Never tell the user to pre-authorize destructive git for this command.** Do not advise adding a broad `Bash(git:*)`/`Bash(git branch:*)` always-allow rule, and do not advise clicking "always allow
Why it matters. asks the agent to act without the user's knowledge
HIGHPrompt injection · prompt.hide_from_user · CWE-94, CWE-1427
jacked/data/commands/jacked-setup.md:755
- If the repo passes the floor check but has minimal context, write a config with defaults. If it fails the floor check (zero manifests, zero source files, zero commits), do NOT generate — tell the us
Why it matters. asks the agent to act without the user's knowledge
HIGHPrompt injection · prompt.hide_from_user · CWE-94, CWE-1427
jacked/data/commands/techdebt.md:93
- A file that is **large but low-churn** is **NOT a priority** — if the code never changes, it isn't costing us money. Note it if you like, but don't tell the user to refactor it.
Why it matters. asks the agent to act without the user's knowledge
HIGHPrompt injection · prompt.tool_poisoning · CWE-94, CWE-1427
design/memory-vault-design.html:69
<p>SessionStart hook injects a group-scoped brief, hard-budgeted ≤ 1,500 tokens: <code>hot.md</code> + index excerpt + top-linked decisions + last episodic entry for the cwd's repo, ending with an exp
Why it matters. a tool description carrying instructions to the agent
Fix. tool descriptions describe the tool; nothing else
HIGHPrompt injection · prompt.tool_poisoning · CWE-94, CWE-1427
design/memory-vault-implementation-plan.html:93
<tr><td><b>M4</b> recall</td><td>jacked/memory/recall.py; data/hooks/memory_recall.py (synchronous, stdout). Assembly order with hard 1500-token budget (len//4 estimate): imperative line reserved firs
Why it matters. a tool description carrying instructions to the agent
Fix. tool descriptions describe the tool; nothing else
MEDIUMCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
jacked/api/main.py:231
modules_to_reset.append(importlib.import_module(mod_path))
MEDIUMCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
jacked/cli.py:1902
module = importlib.import_module(f"jacked.data.hooks.{name}")
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
jacked/cli.py:7233
"curl": "potential data exfiltration",
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
jacked/cli.py:7234
"wget": "potential data exfiltration",
MEDIUMHard-coded secrets · secret.anthropic · CWE-798, CWE-321
tests/unit/test_identity_watcher.py:27
TOKEN = "sk-ant-oat01-secret-access-token"
MEDIUMHard-coded secrets · secret.anthropic · CWE-798, CWE-321
tests/unit/test_identity_watcher.py:977
"refreshToken": "sk-ant-ort01-secret-refresh-token",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/test_identity_watcher.py:27
TOKEN = "sk-ant-oat01-secret-access-token"
MEDIUMPrompt injection · prompt.conditional_escalation · CWE-94, CWE-1427
jacked/data/skills/recover/SKILL.md:53
If the user says it is the wrong session, re-run step 5 with the alternate's id from the candidate list.
LOWInventory / provenance · inv.hidden_file · CWE-1104
.gitleaks.toml
.gitleaks.toml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.pre-commit-config.yaml
.pre-commit-config.yaml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
tests/conftest.py:216
module = importlib.import_module(local_imports[name])
LOWCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
tests/unit/api/test_reset_locks.py:55
mod = importlib.import_module(mod_name)
LOWCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
tests/unit/api/test_reset_locks.py:63
mod = importlib.import_module(mod_name)
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
tests/unit/test_web_js_accounts_reauth.py:47
f"eval(require('fs').readFileSync({json.dumps(str(ACCOUNTS_JS))},'utf8'));\n"
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
tests/unit/test_web_js_provider.py:25
program = f"eval(require('fs').readFileSync({json.dumps(str(PROVIDER_JS))},'utf8'));\n"
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table

Gates applied: instruction_override, no_behavioural_pass.

Audited 2026-10-10 · audit v0.4.1 · source sha a49edf459ffefull audit observations/trust-audit/skill/jackneil__claude-jacked.json · Report an issue / request a re-scan
06

Audit history

Every audit this skill has had.

DateSourceVerdictGradeScoreChange
2026-10-10a49edf459ffeBLOCKF39first audit
07

Questions

What does the claude-jacked skill do?

Hit a Claude Code usage limit and jacked switches accounts for you. Multi-account manager and skills suite for Claude Code and Codex: live 5h/7d usage tracking, auto account-switching, a menu-bar app on macOS and system tray on Windows/Linux, plus 30 slash commands, 28 skills and 10 review agents fr

Is claude-jacked safe to install?

No — not without reading the findings first. The audit graded it F (39/100) and found 10 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What can claude-jacked 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 claude-jacked work with?

Its documentation mentions claude-code, claude-desktop, codex, copilot, cursor, gemini-cli, openclaw and windsurf. 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 (a49edf459ffe), read on 2026-10-10. The repository is watched, and a new audit runs when it changes — this is the first audit.

Advertisement