You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Checks the prompts you type and the tool calls the agent makes for secrets and personal data, locally, and tells you what it found. With enforcement on it stops a prompt or denies a tool call before it runs. Tool results are reported, never masked. No account, network destination or telemetry.
This is a resubmission of #3425, which was rejected with: "Copilot harnesses already have built-in provisions for controlling tool use." I'm one of the maintainers, and I'd like to address that before asking for another look.
shim-cli does not try to replace tool approvals. It checks content, which approvals don't look at. A tool approval decides whether run_in_terminal or fetch_webpage may run; it does not notice that the command or URL it is about to send carries a live API key, or that the prompt you just typed holds a customer's IBAN. shim scans the typed prompt and each tool call's input locally for secrets and personal data (API keys, credentials, connection strings, emails, card numbers, IBANs and more), tells you what it found, and, with enforcement on, stops that prompt or denies that call before it runs.
What VS Code allows, measured on 1.137.0 (docs/compatibility.md at this commit):
Your prompt: reported; under enforce, stopped before it is sent.
Before a tool runs: reported; under enforce, the call is denied. Local tools such as read_file are only reported, never refused.
After a tool has run: reported only. A block there was read straight through by the model, so shim does not pretend otherwise.
Nothing is masked in VS Code. A read_file result reaches the hook empty, so file contents are not inspected; terminal output arrives in full and is.
Tool events report by default; refusing is opt-in per kind of tool in the config file.
VS Code releases newer than 1.137.0 are untested.
GitHub Copilot CLI reads the same hooks file, but the plugin's hook stands down there so nothing is inspected twice; Copilot CLI users install it with shim install copilot, where the model receives the redacted prompt.
The hook needs Python 3.9+. If Python is missing, broken or too old, the prompt is withheld and the call refused rather than let through. Detection is regex plus checksums, so expect some false positives and misses; the README lists every known gap. macOS and Linux only.
v1.2.3 is a release tag; the SHA above is the commit it points to.
Submission checklist
The plugin lives in a public GitHub repository.
The ref and/or sha I provided is immutable (release tag and/or full 40-character commit SHA), not a branch.
This submission follows this repository's contribution, security, and responsible AI policies.
This plugin is not already listed in the Awesome Copilot marketplace.
Agent Plugins v1.0.0 manifest checks passed for plugin.json.
vally lint output (✅ pass)
0 skill(s) linted
install smoke test output (✅ pass)
Install smoke test succeeded. Verified /tmp/external-plugin-quality-3n7dwR/copilot-home/.copilot/installed-plugins/external-plugin-intake/shim-cli/plugin.json.
Version match output
- v1.2.3: matched version "1.2.3" at "plugins/shim-cli/plugin.json".
- a46f39463d5fe9c74ffdecbefd9f2069aca00d9b: matched version "1.2.3" at "plugins/shim-cli/plugin.json".
Ref/SHA consistency output
source.ref "v1.2.3" resolves to the same commit as source.sha "a46f39463d5fe9c74ffdecbefd9f2069aca00d9b".
Canvas structure output
Canvas structure gate skipped because plugin is not tagged with "canvas".
Canonical external.json payload
{
"name": "shim-cli",
"description": "Checks the prompts you type and the tool calls the agent makes for secrets and personal data, locally, and tells you what it found. With enforcement on it stops a prompt or denies a tool call before it runs. Tool results are reported, never masked. No account, network destination or telemetry.",
"version": "1.2.3",
"author": {
"name": "shim Engineering"
},
"repository": "https://github.com/GetSHIM/shim-cli",
"homepage": "https://getshim.tech",
"license": "Apache-2.0",
"keywords": [
"privacy",
"security",
"hooks",
"secrets"
],
"source": {
"source": "github",
"repo": "GetSHIM/shim-cli",
"path": "plugins/shim-cli",
"ref": "v1.2.3",
"sha": "a46f39463d5fe9c74ffdecbefd9f2069aca00d9b"
}
}
Activity
github-actions commentedon Oct 20, 2026
🔴 Contributor Reputation Check: HIGH risk
Maintainers: please review this contributor before merging.
See the workflow run for full details.
Automated check powered by AGT.
github-actions commentedon Oct 20, 2026
✅ External plugin intake passed
This submission passed automated intake validation and quality checks and is ready for maintainer review.
View workflow run · Download full quality gate logs
v1.2.3a46f39463d5fe9c74ffdecbefd9f2069aca00d9bReviewer signals
These are non-blocking heuristics for maintainer review; they are not evidence of misconduct or low quality.
Quality gate summary
Legend: ✅ pass ·⚠️ warning · 🛑 fail
spec compliance output (✅ pass)
vally lint output (✅ pass)
install smoke test output (✅ pass)
Version match output
Ref/SHA consistency output
Canvas structure output
Canonical external.json payload
{ "name": "shim-cli", "description": "Checks the prompts you type and the tool calls the agent makes for secrets and personal data, locally, and tells you what it found. With enforcement on it stops a prompt or denies a tool call before it runs. Tool results are reported, never masked. No account, network destination or telemetry.", "version": "1.2.3", "author": { "name": "shim Engineering" }, "repository": "https://github.com/GetSHIM/shim-cli", "homepage": "https://getshim.tech", "license": "Apache-2.0", "keywords": [ "privacy", "security", "hooks", "secrets" ], "source": { "source": "github", "repo": "GetSHIM/shim-cli", "path": "plugins/shim-cli", "ref": "v1.2.3", "sha": "a46f39463d5fe9c74ffdecbefd9f2069aca00d9b" } }