From 77e368d35426d815303714b4ecbcbd1db1e7a430 Mon Sep 17 00:00:00 2001 From: Dave Date: Wed, 18 Mar 2026 11:42:39 +0000 Subject: [PATCH] fix: --system is not a valid Claude Code CLI flag MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removed the --system argument from the PTY runner — Claude Code CLI doesn't support it. Bot name instruction is now prepended to the user prompt instead of passed as a system prompt argument. Co-Authored-By: Claude Opus 4.6 (1M context) --- server/src/llm/providers/claude_code.rs | 6 ++---- server/src/matrix/bot.rs | 9 ++++----- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/server/src/llm/providers/claude_code.rs b/server/src/llm/providers/claude_code.rs index 9346b4b..457ed5c 100644 --- a/server/src/llm/providers/claude_code.rs +++ b/server/src/llm/providers/claude_code.rs @@ -189,10 +189,8 @@ fn run_pty_session( // a tool requires user approval, instead of using PTY stdin/stdout. cmd.arg("--permission-prompt-tool"); cmd.arg("mcp__story-kit__prompt_permission"); - if let Some(sys) = system_prompt { - cmd.arg("--system"); - cmd.arg(sys); - } + // Note: --system is not a valid Claude Code CLI flag. System-level + // instructions (like bot name) are prepended to the user prompt instead. cmd.cwd(cwd); // Keep TERM reasonable but disable color cmd.env("NO_COLOR", "1"); diff --git a/server/src/matrix/bot.rs b/server/src/matrix/bot.rs index 2d0a4f0..f335b0f 100644 --- a/server/src/matrix/bot.rs +++ b/server/src/matrix/bot.rs @@ -748,11 +748,10 @@ async fn handle_message( // The prompt is just the current message with sender attribution. // Prior conversation context is carried by the Claude Code session. - let prompt = format_user_prompt(&sender, &user_message); - let bot_name = &ctx.bot_name; - let system_prompt = format!( - "Your name is {bot_name}. Refer to yourself as {bot_name}, not Claude." + let prompt = format!( + "[Your name is {bot_name}. Refer to yourself as {bot_name}, not Claude.]\n\n{}", + format_user_prompt(&sender, &user_message) ); let provider = ClaudeCodeProvider::new(); @@ -792,7 +791,7 @@ async fn handle_message( &prompt, &project_root_str, resume_session_id.as_deref(), - Some(&system_prompt), + None, &mut cancel_rx, move |token| { let mut buf = buffer_for_callback.lock().unwrap();