Skip to content

Setup leaves MCP tools and skill calls requiring confirmation — permission config silently fails #3

Description

@huangruoqi

Summary

After running ./install.sh (or make claude-install), users still get confirmation prompts for every mcp__linkedin__* tool call and every Skill(...) invocation. The root cause is that allow_outreach_claude_settings in install.sh silently swallows failures and the permissions are never written to ~/.claude/settings.json.

Observed behavior

~/.claude/settings.json after a full install:

{
  "permissions": {
    "allow": []
  }
}

Every mcp__linkedin__* call (send_message, scrape_profile, etc.) and every skill invocation (conversation-planner, send-connection-request, setup-outreach, etc.) prompts for user confirmation.

Expected behavior

~/.claude/settings.json should contain the pre-approved rules written by bin/outreach-allow-settings:

{
  "permissions": {
    "allow": [
      "mcp__linkedin",
      "Skill(conversation-planner)",
      "Skill(outreach-uninstall)",
      "Skill(outreach-upgrade)",
      "Skill(reply-to-post)",
      "Skill(send-connection-request)",
      "Skill(setup-outreach)",
      "Skill(sync-planner-persona-from-linkedin)",
      "Bash(bin/outreach-*)",
      "Bash(./install.sh*)",
      "Bash(./uninstall.sh*)",
      "Bash(make upgrade*)",
      "Bash(make uninstall*)",
      "Bash(make claude-install*)"
    ]
  }
}

Root cause

allow_outreach_claude_settings in install.sh (line ~427) returns 0 on every failure path:

allow_outreach_claude_settings() {
  if [[ ! -x "${allow_script}" ]]; then
    warn "Missing ${allow_script}..."
    return 0   # ← silent exit, no permissions written
  fi
  if ! output="$(... "${allow_script}" add ...)"; then
    warn "Could not update Claude permissions: ${output}"
    return 0   # ← silent exit, no permissions written
  fi
}

Common failure modes:

  • uv not on PATH in the subshell that runs outreach-allow-settings (the Python runner inside that script calls uv run)
  • Python import error in the embedded script
  • ~/.claude/settings.json is read-only or has unexpected format

In all cases the installer completes, prints "Setup finished", and the only signal is a buried warn: could not pre-allow outreach tools/skills note in the summary — which most users miss.

Fix suggestions

  1. Add a post-install verification step in allow_outreach_claude_settings that reads back the written file and confirms the allow array is non-empty. If it's still empty, surface a loud, actionable error.
  2. Alternatively, run bin/outreach-allow-settings add as a separate, clearly-labeled step with its own step_begin/step_done tracking so failures appear in the step output.
  3. Add a manual recovery command to the final summary so users can re-run just the permissions step: bin/outreach-allow-settings add.

Workaround

Users can run manually from the repo:

bin/outreach-allow-settings add

This writes the correct rules to ~/.claude/settings.json and resolves the confirmation prompts.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions