fullcourtdefense-cli 1.27.3 → 1.27.4

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.
@@ -682,14 +682,22 @@ function tryLocalPolicyEnforcement(ctx, call, detail, opts = {}) {
682
682
  (0, telemetry_1.triggerFlush)(true);
683
683
  ctx.respond(true, `Blocked by FullCourtDefense${local.policyName ? ` (${local.policyName})` : ''} — enforced locally while the policy service is unreachable.${approvalNote}`, `FullCourtDefense blocked this ${ctx.event} using the locally cached org policy${local.policyName ? ` "${local.policyName}"` : ''} (${detail}).${approvalNote} Do not retry until the connection is restored or the policy allows it.`);
684
684
  }
685
+ // Monitor machines land here by design (zero synchronous network calls), not
686
+ // because anything is down — never tell the developer the service is
687
+ // unreachable when it is simply not consulted.
688
+ const monitorPath = opts.countAsGateFailure === false;
685
689
  if (local.verdict === 'log') {
686
690
  // Warn-only rule, offline: still a real warning + Warned in the fleet.
687
691
  const warning = warnByPolicy(call, local, ctx.event, ctx.exitsProcess, 'local-first');
688
- ctx.respond(false, warning.userMsg, `${warning.agentMsg} (policy service unreachable — evaluated from the locally cached org policies).`);
692
+ ctx.respond(false, warning.userMsg, monitorPath
693
+ ? warning.agentMsg
694
+ : `${warning.agentMsg} (policy service unreachable — evaluated from the locally cached org policies).`);
689
695
  }
690
- spoolCallEvent(call, { decision: 'allow', reason: `local policy allow (offline): ${detail}`, offlineEnforced: true });
696
+ spoolCallEvent(call, { decision: 'allow', reason: `local policy allow (${monitorPath ? 'monitor' : 'offline'}): ${detail}`, offlineEnforced: true });
691
697
  (0, telemetry_1.triggerFlush)(false);
692
- ctx.respond(false, undefined, `FullCourtDefense: policy service unreachable — this ${ctx.event} was checked against the locally cached org policies and allowed.`);
698
+ ctx.respond(false, undefined, monitorPath
699
+ ? undefined
700
+ : `FullCourtDefense: policy service unreachable — this ${ctx.event} was checked against the locally cached org policies and allowed.`);
693
701
  }
694
702
  /** Per-event attribution that maps onto the existing Shield runtime headers (prompt path). */
695
703
  function attributionFor(event, p) {
package/dist/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "1.27.3"
2
+ "version": "1.27.4"
3
3
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fullcourtdefense-cli",
3
- "version": "1.27.3",
3
+ "version": "1.27.4",
4
4
  "description": "Full Court Defense CLI — security scanning for AI agents from your terminal",
5
5
  "main": "dist/index.js",
6
6
  "bin": {