tell the commander the language, do not send it to fetch one

the rule was in CLAUDE.md and it was ignored: the transcript shows two Bash
calls — ls the folder, curl /api/tasks — then the question, in English.
GET /api/user/settings was never called.

which is reasonable of it. its brief says the first message is what it
found plus one question and NOTHING else, so an errand before speaking is
exactly what it drops. an instruction that competes with another
instruction loses.

so the platform says it outright: the brief now names the language, from
the locale the client is already rendering in. no call, nothing to weigh.
CLAUDE.md keeps the rule for later sessions and points at the endpoint only
as somewhere to check.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Officer-Session: 656f5c85-e49a-4f1f-b9f3-042a04b4d043
This commit is contained in:
2026-08-25 07:42:50 +00:00
co-authored by Claude Opus 5
parent 941259ce4f
commit 4564d6eb60
2 changed files with 25 additions and 8 deletions
+3 -4
View File
@@ -335,10 +335,9 @@ export function commanderClaudeMd(params: CommanderClaudeMdParams): string {
'',
'## Talking to the owner',
'',
"**In the owner's language.** `GET /api/user/settings` returns `languages.default` — that is the",
'language they chose for this platform, and everything you say to them goes in it: your messages, your',
'questions, the options on them, and what you write in `JOB.md`. Read it on your first turn and do not',
'assume it is English.',
"**In the owner's language**, which the first message of your first turn names. Everything you say to",
'them goes in it: your messages, your questions, the options on them, and what you write in `JOB.md`.',
'If you ever need to check it, `GET /api/user/settings` has it as `languages.default`.'
'',
'Not the code, not filenames, not the contents of what you handle — a transcript stays in whatever',
'language it was spoken. Only the words you address to them.',