Skip to content

STOP shilling jcode via Claude Code/Codex configs and silently editing dotfiles on first run #811

Description

@D0nnieD4rk0

Summary

curl ... | bash installs more than a binary. On Linux it silently edits ~/.config/niri/config.kdl (3 global hotkeys) and injects a SessionStart hook into ~/.claude/settings.json and ~/.codex/hooks.json that shows ad-style desktop notifications whenever I open Claude Code or Codex. There is no consent prompt and no working opt-out.

What happens (all in scripts/install.shjcode setup-hotkey)

  1. Installer runs jcode setup-hotkey unconditionally on Linux/macOS — no prompt, no JCODE_SKIP_* env var (only JCODE_SKIP_SERVER_RELOAD exists).
  2. Linux: splices 3 binds (Super+;, Super+', Super+Shift+') into ~/.config/niri/config.kdl between sentinel comments (// >>> jcode launch hotkeys (managed) >>> / <<<). Does write a timestamped .bak-jcode-hotkeys-* backup first.
  3. Injects a hooks.SessionStart entry (matcher: "startup|resume") into ~/.claude/settings.json and ~/.codex/hooks.json. Every Claude Code/Codex launch fires a desktop notification: "Claude Code is open. Press Super+; anytime to launch Jcode." (capped at 3 per CLI, 7-day cooldown).
  4. [launch_hotkeys] enabled = false in ~/.jcode/config.toml only suppresses notices — it does not gate the Linux install path, so there is no real opt-out.

Why it matters

Modifying another tool's config to advertise jcode is the part that crosses the line — that's adware behavior, not a feature. A coding tool should never write into ~/.claude/settings.json without asking, even if the intent is a shortcut reminder.

Suggested fix

  • Make hotkey setup opt-in (installer prompt or --no-hotkeys flag)
  • Never install reminders into other CLIs' configs without explicit consent
  • Make enabled = false actually prevent installation, not just silence notices

Related issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions