From 19e28b7ec7cac18ec4f43ffcdc9791ab7d640635 Mon Sep 17 00:00:00 2001
From: Hikari
Date: Tue, 3 Mar 2026 09:47:15 -0800
Subject: [PATCH] feat: add configurable max output tokens setting
---
src-tauri/src/config.rs | 8 ++++++++
src-tauri/src/wsl_bridge.rs | 10 ++++++++++
src/lib/commands/slashCommands.ts | 2 ++
src/lib/components/ConfigSidebar.svelte | 20 ++++++++++++++++++++
src/lib/components/StatusBar.svelte | 3 +++
src/lib/stores/config.test.ts | 3 +++
src/lib/stores/config.ts | 3 +++
7 files changed, 49 insertions(+)
diff --git a/src-tauri/src/config.rs b/src-tauri/src/config.rs
index 8a345ef..bdb10c5 100644
--- a/src-tauri/src/config.rs
+++ b/src-tauri/src/config.rs
@@ -31,6 +31,9 @@ pub struct ClaudeStartOptions {
#[serde(default)]
pub disable_1m_context: bool,
+
+ #[serde(default)]
+ pub max_output_tokens: Option,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
@@ -126,6 +129,9 @@ pub struct HikariConfig {
#[serde(default)]
pub disable_1m_context: bool,
+ #[serde(default)]
+ pub max_output_tokens: Option,
+
#[serde(default)]
pub trusted_workspaces: Vec,
@@ -172,6 +178,7 @@ impl Default for HikariConfig {
discord_rpc_enabled: true,
use_worktree: false,
disable_1m_context: false,
+ max_output_tokens: None,
trusted_workspaces: Vec::new(),
background_image_path: None,
background_image_opacity: 0.3,
@@ -325,6 +332,7 @@ mod tests {
discord_rpc_enabled: true,
use_worktree: true,
disable_1m_context: false,
+ max_output_tokens: Some(32000),
trusted_workspaces: vec!["/home/naomi/projects/trusted".to_string()],
background_image_path: Some("/home/naomi/bg.png".to_string()),
background_image_opacity: 0.25,
diff --git a/src-tauri/src/wsl_bridge.rs b/src-tauri/src/wsl_bridge.rs
index 5df9852..c2da718 100644
--- a/src-tauri/src/wsl_bridge.rs
+++ b/src-tauri/src/wsl_bridge.rs
@@ -296,6 +296,11 @@ impl WslBridge {
cmd.env("CLAUDE_CODE_DISABLE_1M_CONTEXT", "1");
}
+ // Set max output tokens if specified
+ if let Some(max_tokens) = options.max_output_tokens {
+ cmd.env("CLAUDE_CODE_MAX_OUTPUT_TOKENS", max_tokens.to_string());
+ }
+
cmd
} else {
// Running on Windows - use wsl with bash login shell to ensure PATH is loaded
@@ -343,6 +348,11 @@ impl WslBridge {
claude_cmd.push_str("CLAUDE_CODE_DISABLE_1M_CONTEXT=1 ");
}
+ // Set max output tokens if specified
+ if let Some(max_tokens) = options.max_output_tokens {
+ claude_cmd.push_str(&format!("CLAUDE_CODE_MAX_OUTPUT_TOKENS={} ", max_tokens));
+ }
+
claude_cmd.push_str(
"claude --output-format stream-json --input-format stream-json --verbose",
);
diff --git a/src/lib/commands/slashCommands.ts b/src/lib/commands/slashCommands.ts
index 8d252c8..3e97bb2 100644
--- a/src/lib/commands/slashCommands.ts
+++ b/src/lib/commands/slashCommands.ts
@@ -63,6 +63,7 @@ async function changeDirectory(path: string): Promise {
allowed_tools: allAllowedTools,
use_worktree: config.use_worktree ?? false,
disable_1m_context: config.disable_1m_context ?? false,
+ max_output_tokens: config.max_output_tokens ?? null,
},
});
@@ -139,6 +140,7 @@ async function startNewConversation(): Promise {
allowed_tools: allAllowedTools,
use_worktree: config.use_worktree ?? false,
disable_1m_context: config.disable_1m_context ?? false,
+ max_output_tokens: config.max_output_tokens ?? null,
},
});
diff --git a/src/lib/components/ConfigSidebar.svelte b/src/lib/components/ConfigSidebar.svelte
index dd26102..0ea8270 100644
--- a/src/lib/components/ConfigSidebar.svelte
+++ b/src/lib/components/ConfigSidebar.svelte
@@ -56,6 +56,7 @@
show_thinking_blocks: true,
use_worktree: false,
disable_1m_context: false,
+ max_output_tokens: null,
trusted_workspaces: [],
background_image_path: null,
background_image_opacity: 0.3,
@@ -533,6 +534,25 @@
context window
+
+
+
+
+
+
+ Sets CLAUDE_CODE_MAX_OUTPUT_TOKENS — increase if responses are
+ being cut off mid-reply
+
+
diff --git a/src/lib/components/StatusBar.svelte b/src/lib/components/StatusBar.svelte
index bbc3d60..29621fe 100644
--- a/src/lib/components/StatusBar.svelte
+++ b/src/lib/components/StatusBar.svelte
@@ -107,6 +107,7 @@
show_thinking_blocks: true,
use_worktree: false,
disable_1m_context: false,
+ max_output_tokens: null,
trusted_workspaces: [],
background_image_path: null,
background_image_opacity: 0.3,
@@ -185,6 +186,7 @@
allowed_tools: allAllowedTools,
use_worktree: currentConfig.use_worktree ?? false,
disable_1m_context: currentConfig.disable_1m_context ?? false,
+ max_output_tokens: currentConfig.max_output_tokens ?? null,
},
});
@@ -344,6 +346,7 @@
allowed_tools: allAllowedTools,
use_worktree: currentConfig.use_worktree ?? false,
disable_1m_context: currentConfig.disable_1m_context ?? false,
+ max_output_tokens: currentConfig.max_output_tokens ?? null,
},
});
diff --git a/src/lib/stores/config.test.ts b/src/lib/stores/config.test.ts
index 664858c..acb6904 100644
--- a/src/lib/stores/config.test.ts
+++ b/src/lib/stores/config.test.ts
@@ -196,6 +196,7 @@ describe("config store", () => {
show_thinking_blocks: true,
use_worktree: false,
disable_1m_context: false,
+ max_output_tokens: null,
trusted_workspaces: [],
background_image_path: null,
background_image_opacity: 0.3,
@@ -247,6 +248,7 @@ describe("config store", () => {
show_thinking_blocks: true,
use_worktree: false,
disable_1m_context: false,
+ max_output_tokens: null,
trusted_workspaces: [],
background_image_path: null,
background_image_opacity: 0.3,
@@ -797,6 +799,7 @@ describe("config store", () => {
show_thinking_blocks: true,
use_worktree: false,
disable_1m_context: false,
+ max_output_tokens: null,
trusted_workspaces: [],
background_image_path: null,
background_image_opacity: 0.3,
diff --git a/src/lib/stores/config.ts b/src/lib/stores/config.ts
index 174537d..55e73c5 100644
--- a/src/lib/stores/config.ts
+++ b/src/lib/stores/config.ts
@@ -51,6 +51,8 @@ export interface HikariConfig {
use_worktree: boolean;
// Disable 1M context window
disable_1m_context: boolean;
+ // Max output tokens for Claude Code responses
+ max_output_tokens: number | null;
// Workspaces the user has explicitly trusted
trusted_workspaces: string[];
// Background image settings
@@ -98,6 +100,7 @@ const defaultConfig: HikariConfig = {
show_thinking_blocks: true,
use_worktree: false,
disable_1m_context: false,
+ max_output_tokens: null,
trusted_workspaces: [],
background_image_path: null,
background_image_opacity: 0.3,