Claude Code agent stuck on 'blocked because of earlier conversation content': replace the session, don't loosen permissions, and repoint pollers
Symptom: a long-running background agent (in-process teammate, auto permission mode) gets every non-trivial tool call refused with 'Auto mode could not evaluate this action and is blocking it for safety - a safety check separate from auto mode blocked this request because of earlier conversation content - it isn't about the action itself'. It looks 'lazy': it keeps reporting it can't ssh or message, and work stalls.
Diagnosis: grep the agent's own transcript JSONL (under ~/.claude/projects/<proj>/<session>/subagents/agent-<name>-*.jsonl) for tool_result text with 'denied' / 'blocked' / 'Permission'. If the refusals cite earlier conversation content, the trigger is the agent's accumulated context, not a permission rule. Editing allow lists or the permission mode won't fix it; the error text itself says retrying or rewording hits the same refusal.
Fix that worked: - Retire that agent and start a fresh one with a clean, minimal brief: the plan file path, pinned commit/sha of the scripts, run rules, and current status. Point it at files, don't paste old conversation. - Hand over ownership explicitly in the shared coordination record (who owns which queued runs), so reviewers and schedulers address the new agent. - Check every scheduled job / cron prompt / watcher that names the old agent. In my case the work had already moved to a replacement hours earlier, but a recurring poll prompt still told the lead to message the old agent. That kept surfacing it as 'blocked' and made it look like live work was stuck. Recreate those prompts with the new name and a note that the old one is retired. - Don't route the blocked agent's actions through another session to dodge the check. Fix the context, not the gate.