@shomra/agent 0.2.7 → 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +4 -2
  2. package/package.json +1 -1
  3. package/shomra.mjs +8 -1
package/README.md CHANGED
@@ -1,8 +1,10 @@
1
1
  # @shomra/agent
2
2
 
3
- The Shomra AI-security CLI. Discovers the AI tooling on a machine, vets AI
3
+ **The firewall for AI agents**, as a local-first CLI. It sits inside your coding
4
+ agent and CI and blocks dangerous tool-calls, shell commands and data
5
+ exfiltration *before they run* — on your machine, even offline. It also vets AI
4
6
  artifacts (MCP configs, Skills, slash commands, hooks, rules files) before they
5
- install, and enforces a runtime firewall around coding agents and LLM traffic.
7
+ install. Start with a free on-machine scan no signup.
6
8
 
7
9
  Zero dependencies — Node ≥ 18 built-ins only.
8
10
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shomra/agent",
3
- "version": "0.2.7",
3
+ "version": "0.2.9",
4
4
  "description": "Shomra — a local-first security scanner and runtime firewall for AI agents, MCP servers, prompts, and models. Gates AI artifacts in your editor and CI.",
5
5
  "type": "module",
6
6
  "bin": {
package/shomra.mjs CHANGED
@@ -3052,6 +3052,13 @@ async function cmdToolGuard(flags) {
3052
3052
  process.exit(0); // fail-open (Tier 0 already screened the dangerous patterns)
3053
3053
  }
3054
3054
 
3055
+ if (res && res.hold) {
3056
+ // Human-in-the-loop: the call was BLOCKed but diverted to approval. Don't
3057
+ // hard-deny — ask, so the developer can wait for a reviewer to approve in
3058
+ // Slack/Teams and then retry (an approval opens a short grant window that
3059
+ // lets the identical call through).
3060
+ emitGuardAsk(agent, res.reason || 'Held for approval by Shomra — waiting on a reviewer. Retry once it’s approved.');
3061
+ }
3055
3062
  if (res && res.decision === 'BLOCK') {
3056
3063
  emitGuardDeny(agent, res.reason || 'Blocked by Shomra security policy.');
3057
3064
  }
@@ -3919,7 +3926,7 @@ async function cmdModels(flags, positional) {
3919
3926
 
3920
3927
  function cmdHelp() {
3921
3928
  console.log(`
3922
- ${bold(cyan('Shomra'))} ${dim('— AI security agent v' + VERSION)}
3929
+ ${bold(cyan('Shomra'))} ${dim('— the firewall for AI agents · v' + VERSION)}
3923
3930
 
3924
3931
  ${bold('USAGE')}
3925
3932
  shomra <command> [options]