Skip to content

Default-on paid session review should be opt-in for a curl|bash install #39

Description

@jeremymanning

The install path is a curl | bash one-liner, and one of the things it switches on spends
the user's Anthropic quota by default. Disclosure is not the same as consent.

Evidence

The default is on. hooks/session-review.sh:186:

REVIEW_ON="${SKILL_COMPOUNDER_REVIEW:-1}"

:332 is the first gate: [ "$REVIEW_ON" = "0" ] && refuse 10 "disabled by SKILL_COMPOUNDER_REVIEW=0".
So the off switch exists and the default is on. The forge arm below it is the opposite
shape, REVIEW_FORGE="${SKILL_COMPOUNDER_REVIEW_FORGE:-0}" (:205), which is the pattern
this issue asks for on the review arm too.

The README does disclose it. README.md:70:

Calls the Anthropic API, on by default. After a long session ends, one detached
claude -p reviews that session for a repeatable procedure. Costs and off switch: What
runs against the API
. Not a hook entry, insight-capture.sh
starts it, so nothing wires it into your settings

and README.md:121 carries measured cost: two runs on sonnet over a 60 KB digest at $0.19
in 60s. README.md:421 repeats that it costs money and is on by default.

The installer does not. install.sh:3 is the advertised command:

curl -fsSL https://raw.githubusercontent.com/ContextLab/claude-skill-compounder/main/install.sh | bash

A user who runs that has not necessarily read README.md:70, and nothing in the install
output asks. The real spend is on disk: skillinsight reviews --all shows 6 dispatched
reviews at $0.04 to $0.22 each.

This is also the user's own stated constraint. From the audit's quoted prompt history
(notes/2026-09-02-audit-and-replan.md, agent 1): "does claude -p use my max subscription?
... if api credits, don't use it".

What to change

The spend should require a yes, not a no.

  • Default SKILL_COMPOUNDER_REVIEW to 0, matching SKILL_COMPOUNDER_REVIEW_FORGE.
  • install.sh prints the measured cost and the command that switches the review on, and
    turns it on only for a user who passes a flag or answers an interactive prompt. A piped
    install has no tty, so the non-interactive default is off.
  • skillforge doctor reports whether the review arm is on, so a user can see it without
    reading a script.
  • README.md:70 and :421 say the default has changed.

Acceptance

  • A test installs into a temp config with no tty and asserts the review arm is off.
  • A test installs with the opt-in flag and asserts it is on.
  • The gate order in hooks/session-review.sh is unchanged apart from the default: gate 10
    still refuses first, and every gate still fails closed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions