New
Apps 86Makers 86This week 86
Promote your app−30%
0views in
the last 30 days

JitPass

Finds plaintext API keys and tokens on your Mac and locks them away

Built with Claude Code

by jitpass · added Oct 29, 2026
no ratings0 comments
Open app Code

The JitPass mark: a green dot inside a soft ring

JitPass

You have API keys and tokens in plaintext on your Mac.
Use JitPass to protect them.

Latest release macOS 14+ on Apple Silicon Signed and notarized by Apple License: PolyForm Perimeter 1.0.0, source-available

Download for Mac · brew install jitpass/tap/jitpass · Docs · jitpass.com

Free for personal and internal company use · Source-available · No account · No telemetry · Nothing leaves your Mac · Secure Enclave ready · Every change can be undone

The JitPass Setup scan: 23 secrets in plain text, found in ~/.aws/credentials, a project .env, ~/.npmrc and ~/.zshrc, with masked values and a Protect 18 Secrets button. Beside it, the Touch ID dialog: JitPass is trying to let aws use your aws credential, via claude.
What's the number on your Mac? The scan only reads, and changes nothing until you say so.

Get started   The problem · Three steps · Install · The menu bar
Protect   Findings and decoys · Your tools keep working · Undo anything
Approve   Two Touch ID moments · Grants · The audit
AI agents   Built for AI agents · AI jobs · A grant or an AI job?
More   How it compares · How it works · What it does not do · Docs

Your secrets are in plain files. Anything you run can read them.

API keys in .env, cloud credentials in ~/.aws/credentials, tokens in .npmrc, exports in ~/.zshrc, your shell history, the MCP configs your agents read. Nothing has to be hacked for them to leak. A compromised npm package, a trojanized IDE extension or a prompt-injected agent runs as you, so it can simply open the file.

JitPass moves each secret into a local vault that opens with Touch ID, and leaves a decoy where the plaintext was.

A terminal. cat .env prints STRIPE_API_KEY=jit-hidden-STRIPE_API_KEY and DATABASE_URL=jit-hidden-DATABASE_URL. Then jit scan --deep reports 18 secrets in the vault, 2 files jit can still protect, and copies an agent kept.

Three steps, about two minutes

The Findings window: 18 secrets in your vault, 4 still have plaintext copies, 2 files jit can protect, 9 flagged lines in Claude Code's transcripts, each with the one thing to do.

1. Find

Setup scans your Mac and changes nothing. It recognises 100+ token formats (OpenAI, Anthropic, AWS, GitHub, Stripe and more), plus private keys and database URLs.
Setup, done: 78% protected, 18 of 23 secrets in the vault, with options to save a recovery file, open at login, and get notified of decoy reads.

2. Protect

One click moves each secret into the vault and leaves a decoy in its place. Every file is backed up first, and your tools keep working.
The macOS Touch ID dialog: JitPass is trying to let aws use your aws credential, via claude. Use Password or Cancel.

3. Approve

When a program reaches for a real key, JitPass names it and what launched it in the Touch ID dialog. Touch to allow, or cancel.

No terminal needed: open JitPass and setup walks you through steps 1 and 2.

Prefer the terminal? The same three steps as commands
jit scan                 # read-only: every exposed secret, file and line
jit migrate --dry-run    # preview the whole fix plan
jit migrate              # apply it: shows the plan, asks [y/N], one Touch ID
jit audit                # afterwards: every request, and what you answered

jit scan with no path sweeps your home folder; point it somewhere to go faster (jit scan ~/.aws). Everything the app does is one of these commands.

Download for Mac · brew install jitpass/tap/jitpass
Free · No account · Every change can be undone

What you get

Protect Approve AI agents
Decoys on disk
A program that reads .env or ~/.aws/credentials without asking gets placeholder values, and the read is logged.
Every request named
The first time a program reaches for a real secret, you see which one and what launched it, then decide.
AI Jobs
Approve a script once. Your AI tool runs it and sees what it prints, never the key.
Findings
What is still in the open, from 100+ token formats, each with the one thing to do about it.
Grants for when you are away
Let one agent work overnight without prompts, for an hour, a week, or until you revoke it.
Claude Desktop and Cursor
Connect them in one click. They run your AI jobs through a local MCP server, even from a sandbox.
Your tools keep working
aws, gh, docker, terraform, kubectl and your shell get their secrets the way they always did.
A full audit trail
Every use, unlock, refusal and decoy read, with the program that asked and the one that launched it.
Keys out of AI transcripts
Searches the transcripts and edit history agents keep for copies of your keys and 100+ vendor token formats, and redacts them.
A clean shell history
A zsh hook keeps any command you type with a token in it out of your history file.
Undo anything
Every file is backed up before it changes. Put one project back, or remove JitPass and get every file back.
MCP keys out of configs
MCP configs hold vault paths instead of keys, and agents' own API keys move to the vault too.
A key that never leaves your Mac
Keep the vault key in the Secure Enclave, the chip that holds keys and never lets them out.
Locks when you walk away
The vault locks after 5 minutes idle, when your screen locks, and when your Mac sleeps.
Every agent you use
Claude Code, Codex, Gemini, Cursor, Copilot, Cline, OpenCode and Kiro, each named when it asks.

Built for AI agents

Your coding agent runs as you, with your shell and your files. One poisoned README, issue or web page can tell it to cat .env and paste the result somewhere. With JitPass, there is nothing real in that file to paste.

The JitPass AI Agents window: a card for Claude Code with copies of 4 vaulted secrets in its files, what it can reach, what it did this week, its key, and a switch to redact its caches after every scheduled scan.

  • A cold read gets a decoy, and the read is logged.
  • Every request is named. When an agent runs aws or an MCP server, you see which program and which agent, then decide.
  • Keys out of configs. MCP server keys and the agents' own API keys move to the vault.
  • Keys out of transcripts. The deep scan finds the copies agents kept, across 100+ token formats, and Redact clears them.

The AI Agents window shows each agent on your Mac: keys in its files, what it can reach, and what it did this week.

Prefer the terminal? The same, as commands
jit migrate ~/.claude.json            # MCP server keys move to the vault
jit wrap claude                       # the agent's own API key too
jit migrate caches                    # clear copies of vaulted keys from agent transcripts
jit migrate redact                    # and tokens in them that were never vaulted
jit audit --parent claude             # what the agent touched

More in MCP and AI tools and per-process consent.

Let AI run your scripts, never your keys

Some work needs a key and a script, and you want an agent to do it: export a report, sync a list, call an internal API. Handing the agent the key means it is in the agent's context, its transcript and its sandbox. An AI Job hands it the result instead.

A job is a command you approved, with the secrets it gets. When an AI tool asks for one, the jit service runs it: it decrypts, starts the command in its folder, hides every secret value in the output, and hands back the text.

The New AI Job sheet: let AI tools run export_pages.py in notion with 3 secrets. Profile notion, the folder, the exact command, NOTION_API_KEY hidden, NOTION_WORKSPACE shown, asks each time, and Approve with Touch ID. The AI Jobs window: 3 jobs, 1 needs you. billing-report stopped because report.py changed, with Review. Two ready jobs with who ran them last, each with Edit and Remove. Then the AI apps that can ask: Claude Desktop connected, Cursor with Connect, and terminal agents.
1. Pick a profile, pick a script, approve with Touch ID 2. Every job, who ran it, and which AI apps can ask

Open AI Jobs from the menu bar and press New AI Job…. Pick the profile whose secrets the script needs, then the script, and approve. Connect adds jit to Claude Desktop or Cursor; terminal agents like Claude Code and Codex need nothing.

Prefer the terminal? The same, as commands
$ jit job allow notion-export -- .venv/bin/python export_pages.py
  Touch ID  ->  let AI run notion/export_pages.py with 3 secrets, 1 shown
✓ Approved notion-export · 41 files fingerprinted
jit job run notion-export          # what Claude Code, Codex or Gemini CLI types
jit mcp install                    # Claude Desktop, whose Cowork shell can't run jit itself
jit mcp install --client cursor    # Cursor

What the tool gets back is the script's own output, then what jit adds:

Exported 42 pages to out/notion_20260925.csv
[jit] new file: out/notion_20260925.csv
[jit] hidden values: none

If the script had printed its key, the line would read [hidden: NOTION_API_KEY] in its place, and the count would say so.

Three rules make it safe to leave running:

  • Only you approve a job, with Touch ID. An agent can propose one; it arrives as a filled-in sheet you read before anything runs.
  • A changed file stops the job. jit fingerprints the folder when you approve it. Edit the script or a library it loads, and the job is refused until you look at what changed and approve it again.
  • Commands that hand values back are refused. python -c, sh -c, env, cat: anything that would just print the secrets it is given.

A job asks for Touch ID on every run by default. --ask never lets it run while you are away, until you remove it; removing a job never asks. Add --dry-run to see the whole job without approving anything. Details: AI jobs. Wondering whether you need a grant instead? See A grant or an AI job?

Leaving the keyboard

An agent working overnight or a 3 a.m. job stalls on a question nobody is there to answer. A grant moves your decision earlier instead of removing it: one Touch ID while you are still there, naming exactly which program may use which secrets, and for how long.

The New Grant sheet: let claude under iTerm2 use mcp-github and mcp-linear until you revoke it. Cover every copy, the program and the terminal it runs under, the profiles with their secrets, and For: 1h, 8h, 24h, 7d or Until revoked. The Grants window: three grants for claude. One serving right now, one standing and last used Monday, one ending because its process exited. Each has Revoke.
1. Say who, which secrets and how long, then Touch ID 2. Every grant, how often it was used, and Revoke

Open New Grant… from the menu bar. Pick the program (every copy started under a terminal or editor, or one running process), tick the profiles it may use, and choose how long: 1 hour to 7 days, or until you revoke it. A grant ends at its deadline, when that one process exits, or when you press Revoke, which never asks: taking access away is always free.

Prefer the terminal? The same, as commands
$ jit grant --process claude --profile myapp --for 8h
  Touch ID  ->  let claude use "myapp" for 8 hours
✓ granted g-7f3a2c81   claude -> myapp   until 17:42

It covers claude under the terminal you typed that in, through screen lock, and nothing called claude anywhere else. Swap --for 8h for --until-revoked and it has no deadline: it holds a key of its own, survives a restart and a reboot, and ends only on jit grant revoke. Details: process grants.

A grant or an AI job?

Both let an agent work without asking you each time. The difference is whether the agent ever holds the key.

Grant AI job
The agent gets The real secret values Only the script's output, with every value hidden
It can run Anything it likes, with those secrets One command you approved, in one folder
Who it covers One program: every copy under a terminal, or one process Any AI tool you connected: terminal agents, Claude Desktop, Cursor
If a file changes Keeps working Stops until you look and approve again
Touch ID None while it lasts Every run, or never until you remove it
Ends At its deadline, when its process exits, or on Revoke When you remove it
Use it when The agent needs the key itself: aws, terraform, an MCP server The agent needs a result, not the key, or runs in a sandbox like Claude Desktop

Your tools keep working

No new commands to learn. Protect a credential once, then keep typing what you always typed.

The JitPass Tools window: 4 tools run through jit, 1 needs you. A captured AWS login w

Description taken from the repository README.

Ratings

–
0 ratings
5 0
4 0
3 0
2 0
1 0

Rate this app

Sign in to rate

Comments 0

Sign in to comment

No comments yet.

Related apps

#security · #secrets · #macos