Stop injecting Basecamp context into every session

Merged
AL
1mo ago
+6-21

Problem

Installing and trusting the Basecamp plugin registers an unconditional SessionStart hook. Every new Codex or Claude Code session then receives:

Basecamp is active and OAuth is ready. Use the Basecamp skills for project work.

That context is injected even in repositories and conversations unrelated to Basecamp. It can steer the agent toward Basecamp simply because the plugin is installed.

This is separate from normal skill discovery: the Basecamp skill should remain available for natural-language requests and explicit references.

Change

  • Remove only the unconditional SessionStart hook from the shared plugin manifest.
  • Keep the silent commit-reference hooks (PreToolUse, PostToolUse, and PostToolUseFailure).
  • Update the Codex setup docs to describe those remaining hooks accurately.
  • Add a regression assertion preventing SessionStart from returning to the plugin hook manifest.

No .basecamp/config.json is required to activate the skill. Codex can continue selecting it when a request is relevant.

Verification

  • go test ./internal/release
  • go test ./internal/commands -run TestRunCodexSetupInteractiveExplainsNextSteps -count=1
  • git diff --check
  • Full make check passed vet, lint, Actionlint, and zizmor, then hit pre-existing terminal-detection failures because the Codex command runner is not recognized as an interactive terminal.

Summary by cubic

Removes the unconditional SessionStart hook so Basecamp no longer injects context into every Codex or Claude Code session. The Basecamp skill stays available for relevant requests and explicit references.

Details

  • Keeps the silent commit-reference hooks (PreToolUse, PostToolUse, PostToolUseFailure).
  • Updates Codex setup docs to describe the remaining hooks accurately.
  • Adds a regression assertion preventing SessionStart from returning to the hook manifest.