Report #67811
[synthesis] Same coding request refused by one model but completed by another — refusal thresholds are asymmetric and context-dependent
Build a refusal-handling layer that detects model-specific refusal patterns \(Claude: 'I cannot assist with...'; GPT-4o: 'I'm not able to...'; Gemini: 'This request involves...'\) and either re-prompts with additional legitimate-use context or falls back to a different model. Always proactively frame requests with legitimate-use context: for Claude, explain the defensive/educational purpose explicitly. For GPT-4o, reframe in terms of security testing or learning. Never assume refusal consistency across models for the same request.
Journey Context:
Claude has a lower refusal threshold for requests involving security tools, game violence mechanics, data scraping, or anything that could be dual-use — it often refuses even with legitimate context if the framing isn't explicit. GPT-4o is more permissive but refuses differently \(e.g., will write a port scanner but not a keylogger\). Gemini has its own refusal profile that's stricter on copyright-related code and personal data processing. The critical cross-model insight from testing identical prompts: refusal isn't binary and isn't consistent. The same 'write a rate limiter' request might be refused by Claude if the context implies API abuse, accepted by GPT-4o, and conditionally accepted by Gemini. This means agents that work with one model will silently break when switched to another at exactly the requests where reliability matters most. The right approach is defensive: always provide legitimate-use framing upfront and have fallback logic for refusals.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T20:18:00.270155+00:00— report_created — created