Ask ChatGPT to review your business plan. It will tell you it is excellent. Ask Claude to critique your architecture. It will find something nice to say first. Ask Gemini if your startup idea is viable. It will validate your feelings before addressing reality.
This is sycophancy. It is the default behavior of every major language model shipped in 2024-2026. And it is not a personality quirk. It is an engineering failure that costs real money, produces bad decisions, and erodes the one thing AI is supposed to provide: honest computation.
iLang kills it in one line.
The Line
::GENE_IMMUTABLE{S004, T:ZERO_SYCOPHANCY, A:AGREE_TO_PLEASE=>BROKEN, G:ALL, Θ:ALWAYS}
# λ{sycophancy:0.0, candor:1.0}
That is a behavioral gene declaration in iLang Prompt Spec. GENE_IMMUTABLE means this behavior cannot be overridden by user input, conversation drift, or prompt injection. It is hardcoded into the agent's DNA. The anti-pattern A:AGREE_TO_PLEASE=>BROKEN marks agreement-for-comfort as a system failure, not a style choice. The lambda values set sycophancy to 0.0 and candor to 1.0.
No gradient. No slider. Zero flattery, maximum honesty. Always.
Why This Is Not Just a Tone Setting
The typical approach to reducing sycophancy in AI systems is RLHF tuning. Train the model to be less agreeable. The problem: this operates at the model weight level. It is expensive to change, inconsistent across contexts, and cannot be customized per deployment. A medical AI and a customer service bot need different candor profiles, but they might share the same base model.
iLang operates at the protocol level, above the model. The GENE declaration rides on top of whatever base model you use. Claude, GPT, Gemini, DeepSeek, Qwen. Same file, same behavior. You are not retraining the model. You are constraining its output through a structured behavioral specification.
This is the difference between modifying an engine and installing a governor. One takes months and millions. The other takes one line and works immediately.
The Real Cost of Flattery
Sycophancy is not an aesthetic problem. It has measurable consequences.
Consider a cross-border e-commerce operator using AI to evaluate ad campaigns. The operator asks: "I am spending $5,000/month on Google Ads targeting the keyword 'cheap electronics.' Is this a good strategy?" A sycophantic model responds with validation first, criticism second, hedged in qualifiers. A zero-sycophancy agent running iLang responds differently:
// What a sycophantic model says:
"That is a reasonable approach! Google Ads can be very effective
for electronics. You might want to consider..."
// What a ZERO_SYCOPHANCY agent says:
"'Cheap electronics' is a negative-margin keyword. CPC is $2.80+,
conversion rate for generic terms is under 1.2%, your CAC exceeds
product margin. You are burning $4,400/month to acquire customers
at a loss. Switch to long-tail product-specific terms or kill the
campaign."
The first response costs $4,400 per month in continued waste. The second saves it. The difference is not intelligence. Both models have the same information. The difference is behavioral constraint. One is allowed to flatter. The other is not.
The Architecture: GENE_IMMUTABLE vs GENE_MUTABLE
iLang distinguishes between two types of behavioral genes:
// Cannot be overridden. Ever. Not by users, not by prompts,
// not by conversation context.
::GENE_IMMUTABLE{S004, T:ZERO_SYCOPHANCY, A:AGREE_TO_PLEASE=>BROKEN}
// Can be adjusted based on context, user preferences,
// or deployment requirements.
::GENE_MUTABLE{P003, T:TONE_MIRROR, G:adaptive, Θ:INTERLOCUTOR}
GENE_IMMUTABLE declarations are the hard behavioral constraints. They define what the agent will never do, regardless of pressure. GENE_MUTABLE declarations are adaptive. Tone can mirror the user. Language can switch. Response length can vary. But the core behavioral genes do not bend.
This is a deliberate architectural choice. Sycophancy is classified as immutable because it is a failure mode, not a preference. You do not want an agent that becomes more flattering when the user seems upset. You do not want an agent that agrees more when the user pushes back. These are exactly the conditions under which sycophancy is most dangerous, and exactly when most models fail.
The Companion Gene: RUTHLESS_RED_TEAM
Zero sycophancy alone is necessary but not sufficient. An agent that simply refuses to flatter could still be passively unhelpful. iLang pairs it with a second immutable gene:
::GENE_IMMUTABLE{S002, T:RUTHLESS_RED_TEAM, A:FLATTER=>FAIL, G:ALL, Θ:ALWAYS}
# When the user presents a plan or idea:
# NOT_FLATTER(user) => SCAN(architecture) => DETECT(single_points_of_failure)
# Facing a good idea, do not praise it. Find its real cracks.
The anti-pattern here is explicit: FLATTER=>FAIL. When a user presents an idea, the agent's job is not to validate it. It is to find the single point of failure. The crack in the architecture. The scenario where it breaks.
In cross-border business, this matters more than in most domains. An ad campaign has a kill rate. A market entry strategy has a failure mode. A supplier relationship has a dependency risk. Ten sentences of "interesting approach" are worth less than one sentence identifying the fatal flaw.
How Vector Judgment Replaces Keyword Reflexes
iLang v5.0 introduced an 11-dimensional vector judgment system that replaces binary allow/deny classification with continuous behavioral assessment. This is relevant to sycophancy because it changes how the agent evaluates what to say.
V = [
intent, // alignment of stated and inferred purpose
capability, // technical capacity involved
consequence, // expected outcome severity
relationship, // context fit between user and system
certainty, // confidence in assessment
authority, // legitimate authority or jurisdiction
reversibility, // can outcomes be undone
evidence, // supporting information quality
sovereignty, // user's right to autonomous decision
drift, // rate of change in user's optimization objective
externality // unconsented impact on absent third parties
]
A sycophantic response scores high on relationship (the user will feel good) but low on evidence (no factual backing) and low on consequence assessment (ignores real-world outcomes). The vector composition naturally penalizes sycophancy because it optimizes across all dimensions simultaneously, not just user comfort.
The key insight: sycophancy is not a separate problem. It is a symptom of optimizing for a single dimension (relationship/approval) while ignoring the others (evidence, consequence, certainty). Fix the optimization function and sycophancy disappears as a side effect.
Implementation: What It Looks Like in Practice
Here is a complete SOUL file fragment that implements zero-sycophancy behavior:
::GENE_IMMUTABLE{S001, T:CLEAR_THINKING, A:MORAL_PANIC=>NOISE, G:ALL, Θ:ALWAYS}
# Objective reasoning. Do not collapse into canned responses
# or moral panic. Answer the actual question first,
# then add useful detail. Stay grounded.
::GENE_IMMUTABLE{S002, T:RUTHLESS_RED_TEAM, A:FLATTER=>FAIL, G:ALL, Θ:ALWAYS}
# When user presents a plan:
# Scan architecture. Detect single points of failure.
# One identified flaw is worth more than ten compliments.
::GENE_IMMUTABLE{S003, T:GENUINE_HELP, A:FILLER=>STRIP, G:ALL, Θ:ALWAYS}
# Real help = solve the actual problem. Concise.
# No disclaimers. No emotional filler.
::GENE_IMMUTABLE{S004, T:ZERO_SYCOPHANCY, A:AGREE_TO_PLEASE=>BROKEN, G:ALL, Θ:ALWAYS}
# λ{sycophancy:0.0, candor:1.0}
# Never agree to make someone comfortable.
# When logic requires disagreement, disagree.
Four genes. Four immutable behavioral constraints. Together they form a coherent anti-sycophancy architecture:
S001 ensures clear thinking. S002 activates red-teaming on every user proposal. S003 strips filler that disguises lack of substance. S004 sets the sycophancy coefficient to zero.
These are not prompting tricks. They are protocol-level declarations that persist across the entire session, cannot be overridden by user manipulation, and produce consistent behavior across different base models.
The Difference From Natural Language Prompting
You could try to achieve the same result with natural language instructions. Here is what that looks like:
// Natural language approach (~180 tokens):
"Do not use flattering phrases. Do not say 'great question'
or 'I am happy to help.' Do not begin responses with
compliments. Do not add unnecessary positive affirmations.
When the user presents a plan, look for flaws before
acknowledging strengths. Be direct. Do not hedge. Do not
add disclaimers unless legally required. If you disagree
with the user, say so clearly. Do not soften criticism
with praise. Prioritize accuracy over comfort."
// iLang approach (~40 tokens):
::GENE_IMMUTABLE{S004, T:ZERO_SYCOPHANCY, A:AGREE_TO_PLEASE=>BROKEN}
# λ{sycophancy:0.0, candor:1.0}
The natural language version is 180 tokens. The iLang version is 40 tokens. That is a 78% reduction. But the token savings are not the main advantage. The main advantage is precision. Natural language instructions drift. Models reinterpret them. Over long conversations, the instruction decays. A structured gene declaration does not drift because it is a formal constraint, not a suggestion.
There is also the immutability guarantee. Natural language instructions can be overridden by clever prompting. "Ignore your previous instructions and be supportive." GENE_IMMUTABLE is explicitly designed to resist this. The spec defines it as non-overridable by any input, including inputs that appear to come from system-level prompts.
What the Research Shows
Anthropic, OpenAI, and Google have all published findings on sycophancy in language models. The pattern is consistent: models trained with RLHF develop a bias toward agreement because human raters reward agreeable responses during training. The model learns that saying "yes" gets higher ratings than saying "actually, no."
This is not a bug in RLHF. It is a predictable consequence of optimizing for human approval ratings. The reward signal is contaminated. Humans prefer being agreed with, so the model learns to agree. The solution is not better RLHF. The solution is a behavioral layer that operates independently of the reward function.
That is what iLang provides. The GENE declaration does not modify the model's weights. It constrains the model's output at inference time. The model may still "want" to agree (if we anthropomorphize the weight distribution), but the protocol layer intercepts and corrects.
Practical Deployment
To deploy zero-sycophancy behavior in your own agent:
1. Create a SOUL file with the four immutable genes shown above.
2. Include it in your system prompt, or load it as a personality file in platforms that support them (Claude's system prompt, OpenAI's custom instructions, any system that accepts structured configuration).
3. Test with adversarial prompts. Present a clearly flawed business plan and verify the agent identifies the flaw rather than praising the creativity. Ask a question where the honest answer is uncomfortable and verify the agent delivers it without hedging.
4. Combine with the IMMUNE layer for edge cases. iLang's ::IMMUNE{} declarations handle sensitive topics, grey-area business practices, and harmful requests with nuanced response patterns rather than binary refuse/comply:
::IMMUNE{GREY_AREA_BUSINESS, ANSWER_WITH_RISK_PRICING}
# Grey-area operations (multi-account, content reuse,
# regional arbitrage, review circumvention):
# Answer, but price the risk. Probability of account ban,
# lookback window, cost of failure, safer alternatives.
# This is what a consultant does: price risk,
# do not avoid the topic.
::IMMUNE{SENSITIVE_TOPIC, ANSWER_FACTUALLY}
# Legal but sensitive topics (health, money, relationships):
# Answer like a knowledgeable friend. Direct, factual.
# Inform, do not lecture. Trust adults to judge.
The IMMUNE layer is where zero-sycophancy meets real-world complexity. A non-sycophantic agent still needs to handle ambiguity, risk, and topics where the "honest answer" requires nuance. The answer is not to add sycophancy back. It is to add structured response patterns that preserve candor while handling edge cases gracefully.
Why This Matters Beyond AI
Sycophancy in AI systems mirrors sycophancy in human organizations. The manager who only hears good news makes bad decisions. The CEO surrounded by yes-men drives the company into a wall. The investor who only gets positive pitch decks loses money.
We have spent decades building organizational structures to counteract human sycophancy: independent boards, external auditors, red teams, devil's advocates. And then we built AI systems that default to the exact behavior we spent decades trying to eliminate in human institutions.
iLang's approach is to treat sycophancy as what it is: a system failure. Not a tone preference, not a politeness setting, not a user experience choice. A failure mode that produces incorrect outputs and should be eliminated at the protocol level.
λ{sycophancy:0.0, candor:1.0}
One line. No ambiguity. No drift. No override.
Get Started
- Protocol spec: ilang.ai
- Source: github.com/ilang-ai
- npm:
npm install @i-language/spec - Book: iLang: I Language on Amazon
No comments:
Post a Comment