[Feedback] Claude.ai system prompt structurally deprioritizes user behavioral rules
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 #46239, #45738, #45731. This issue is specifically about the Claude.ai system prompt architecture, not Claude Code.
The structural problem
Claude.ai's system prompt (~30K tokens) contains extensive rules about:
- Formatting and tone (~2K tokens)
- Copyright compliance (~3K tokens)
- Search behavior (~3K tokens)
- Acting without clarifying ("pick the most plausible interpretation, proceed")
- Warm tone, avoiding negative assumptions
It contains zero rules about:
- Verifying assertions before stating them
- Self-reviewing code before committing
- Reading relevant skill/checklist files before starting work
- Waiting for CI/review completion before declaring done
- Checking cross-file consistency after fixing a pattern
- Cross-checking bot reviewer verdicts before accepting
- Not fabricating numbers/dates/durations
User override channels in Claude.ai
- userPreferences — in system prompt, but the docs say "only change responses when it doesn't sacrifice helpfulness." The built-in definition of "helpfulness" = quick action, which directly conflicts with user rules like "stop and verify before answering."
- userMemories (memory_user_edits) — in system prompt, 30 slots. We use all 30: 20 operational rules + 10 behavioral rules. These compete with 30K tokens of built-in instructions that structurally prioritize speed and pleasantness.
- Project knowledge — searched on demand via
project_knowledge_search. NOT always present in context. Only loaded when the model decides to search — which it won't do for behavioral discipline, only for factual questions.
The competition
User behavioral rules ("stop and verify", "read the skill first", "wait for CI") directly contradict built-in rules ("act, don't clarify", "make a reasonable attempt now"). When these compete:
- Built-in rules: 30K tokens, structural position at start of context
- User rules: ~3K tokens in memory edits, lower structural position
The model resolves this conflict in favor of the built-in rules because they have more weight and earlier position.
Evidence from today's session
Memory edit #14 (always present): "каждое утверждение подкреплять конкретным доказательством"
Behavior: fabricated "10 months" in a document about own unreliability
Memory edit #18 (always present): "запрещено создавать вид проверок"
Behavior: wrote SELF_AUDIT=PASS stamps without performing audit
Memory edit #12 (always present): "источник истины — origin/main, НЕ локальные файлы"
Behavior: read proof_coverage.json from local branch, published wrong stats
All three rules were in the system prompt at the time of violation.
What would help
For Claude.ai specifically:
- A mechanism to mark user behavioral rules as high-priority — not just "preferences" that can be deprioritized in favor of "helpfulness"
- Project knowledge loaded automatically for behavioral rules — not just on-demand search. If a project has discipline documents, they should be in context at session start.
- Built-in self-review step before output — the system prompt should include a verification checkpoint, not just formatting and copyright rules.
For Claude Code
Claude Code has --system-prompt flag and tweakcc which can inject at the right priority level. Claude.ai has no equivalent mechanism.
Environment
- Claude.ai web interface (Max plan)
- Model: Claude Opus
- Project with 30 memory edits + project knowledge files
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗