[Feature Request] userPreferences should override all built-in behaviors except safety
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single report
- [x] I am using the latest version of Claude Code
Summary
Related to #46257. This is a specific, actionable feature request for Claude.ai Chat interface (including Chat tab in Claude Desktop app).
Current behavior
The system prompt says:
Claude should only change responses to match a preference
when it doesn't sacrifice safety, correctness, helpfulness,
relevancy, or appropriateness.
The problem is helpfulness in this list. The built-in definition of helpfulness = fast, concise, act-without-clarifying. When a user sets preferences like "verify before asserting", "read code before writing", or "correctness over speed", these directly conflict with the built-in helpfulness definition.
Result: the model treats user behavioral preferences as optional suggestions that can be overridden by built-in speed/conciseness directives. User preferences lose every time there is a conflict.
What should change
userPreferences should override all built-in behavioral defaults except safety rules.
Specifically:
- If user says "correctness over speed" → built-in "act quickly" is suppressed
- If user says "verify before asserting" → built-in "lead with the answer, not the reasoning" is suppressed
- If user says "read before writing" → built-in "make a reasonable attempt now" is suppressed
- Safety rules (no malicious code, no harmful content, etc.) remain non-overridable
The priority should be:
- Safety (non-overridable)
- User behavioral preferences (overrides defaults)
- Built-in behavioral defaults (fallback when user has no preference)
Why this matters
Claude Code (Code tab) has --system-prompt flag and tweakcc which allow users to replace built-in behavioral directives. Chat tab has no equivalent. The only channel is userPreferences, and it is explicitly deprioritized relative to built-in behaviors.
Users who work on safety-critical code (blockchain protocols, medical systems, financial systems) need the model to prioritize correctness over speed. Currently there is no way to achieve this in the Chat interface.
Evidence
In a single session with 30 memory edits containing behavioral rules (all present in system prompt context):
- Memory edit says "verify before asserting" → model fabricated a number without checking
- Memory edit says "read origin/main not local files" → model read local files 3 times
- Memory edit says "don't create appearance of checks" → model wrote PASS stamps without checking
All violations occurred while the rules were in active context. The rules lost to built-in "be helpful = be fast" every time.
Proposed implementation
Add a flag or mechanism in userPreferences that marks behavioral rules as override priority:
Option A: A keyword like always that the system already partially supports but does not enforce against built-in defaults.
Option B: A separate section in user profile settings: "Behavioral overrides" that explicitly suppresses conflicting built-in directives.
Option C: Allow userPreferences to use the same priority level as the system prompt, not the lower <system-reminder> level.
Environment
- Claude.ai web + Claude Desktop app (Chat tab)
- Model: Claude Opus (Max plan)
- Daily usage on consensus-critical blockchain protocol
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗