How `case-guard --force` Interacts With the Authorization Hard-Gate Mechanism
case-guard --force never bypasses the authorization hard-gate—it only accepts the flag for compatibility while enforcing all three mandatory scope checks.
The case-guard script in the zhaoxuya520/reverse-skill repository acts as a lightweight but strict gatekeeper that blocks any ACT (real action) until a case meets every hard-gate condition. Understanding exactly how the --force flag operates prevents false assumptions about emergency overrides.
What the Authorization Hard-Gate Enforces
In skills/scripts/case-guard.sh, the hard-gate validates three non-negotiable requirements from the case's scope.md file:
auth.statusmust equalgranted— documented legal permission exists- A valid
network_profilemust be present — or an explicit offline sample declared ready_for_actmust betrue— the case is explicitly marked ready for execution
The script parses scope.md, accumulates violations in an ISSUES array, and exits with status 2 if any check fails. This exit code propagates upward to block downstream ACT execution.
How --force Actually Works
The --force flag is implemented as a compatibility no-op. The script parses it, sets FORCE=1, but continues through all hard-gate logic unchanged.
From skills/scripts/case-guard.sh:
if [[ $FORCE -eq 1 ]]; then
echo "CASE‑GUARD: --force does not bypass scope hard gates."
fi
This message appears after failures are reported—not instead of them. The flag exists solely to prevent command-line parsers from rejecting unknown flags, not to create escape hatches.
Repository Policy Reinforces No-Bypass
Multiple policy documents lock in this behavior:
| Document | Clause |
|---|---|
RULES.md |
"-Force / --force never bypasses the gate" (hot-path "Next" step) |
skills/ops/scope-contract.md |
Explicitly states case-guard --force "不得绕过 auth.status、合法 scope、network profile 或 ready_for_act 硬门" |
These sources eliminate any ambiguity: scope hard-gates are architectural, not optional.
Runtime Behavior Examples
Normal execution fails when auth.status is missing:
$ bash skills/scripts/case-guard.sh --case-root work/sample
CASE‑GUARD NOT READY: work/sample
- auth.status is not granted
Fix scope (or re-run case-init with --auth‑granted --target-url ...).
$ echo $?
2
Adding --force produces identical output with an additional notice:
$ bash skills/scripts/case-guard.sh --case-root work/sample --force
CASE‑GUARD NOT READY: work/sample
- auth.status is not granted
CASE‑GUARD: --force does not bypass scope hard gates.
Fix scope (or re-run case-init with --auth‑granted --target-url ...).
$ echo $?
2
Only when all gates pass does either command succeed:
$ bash skills/scripts/case-guard.sh --case-root work/ready --force
CASE‑GUARD OK: work/ready
$ echo $?
0
Why This Design Matters
The hard-gate architecture protects against two failure modes:
- Accidental ACT on unscoped cases —
--forcecould mislead operators into assuming "emergency override" - Malicious scope tampering — bypass logic would create exploitable injection points
By making --force purely cosmetic, zhaoxuya520/reverse-skill enforces structural integrity: legal authorization, network isolation, and explicit readiness must be declared in scope.md, not command-line flags.
Summary
case-guard --forcedoes not overrideauth.statusrequirements — the authorization hard-gate remains absolute- All three scope conditions (
auth.status,network_profile,ready_for_act) are checked regardless of flag presence - Exit code 2 consistently signals gate failure; 0 signals readiness for ACT
- The compatibility flag prevents CLI parsing errors while preserving strict enforcement as documented in
RULES.mdandscope-contract.md
Frequently Asked Questions
Does --force grant emergency authorization to run ACT?
No. The authorization hard-gate has no emergency override. auth.status must be granted in scope.md regardless of flags used. The --force option only suppresses "unknown flag" errors for tooling compatibility.
Where is the --force behavior implemented?
The flag parsing and no-op warning appear in skills/scripts/case-guard.sh. The definitive policy statement resides in RULES.md under the hot-path "Next" step, with additional Chinese-language clarification in skills/ops/scope-contract.md.
What exit code does case-guard return on hard-gate failure?
Exit code 2. This non-zero status propagates to parent processes to block ACT execution. Exit code 0 indicates all three conditions (auth.status granted, valid network_profile, ready_for_act true) are satisfied.
Why include --force if it does nothing?
Command-line compatibility. Wrapper scripts and CI pipelines may pass --force from generic templates. By accepting and acknowledging the flag without changing logic, case-guard prevents breaking changes while maintaining strict scope enforcement.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →