In Codewhale (Windows) copy/paste is not properly implemented.
If I "copy" several lines in clipboard and then I do a "paste" in Codewhale TUI, the lines are sent to LLM as separated prompts, while they should be managed as ONE prompt.
This feature is managed properly in other harness (see example below).
If I "paste" in Codewhale 24 lines they will be treated by the LLM as 24 consecutive prompts and will try to answer to each of them: a real nightmare. I don't know if this problem is related to Windows or nobody is using copy/paste in Codewhale but this issue is really annoying.
Version Information:
codewhale-tui: 0.10.0 (1be1a703b975)
rust: unknown
Updates:
· current: v0.10.0
· latest: unknown (not checked; offline default)
Run `codewhale doctor --check-updates` to opt in.
Configuration:
✓ config.toml found at ~\.codewhale\config.toml
! credential-shaped value(s) in config.toml (api_key): move them to the secret backend, then scrub the file — config.toml is plain text
workspace: C:\AiProjects
search_provider: firecrawl (source: default; set [search] provider = "baidu" | "metaso" | "volcengine" for China)
Resolved User Paths (read-only):
· home: ~\.codewhale
· config: ~\.codewhale\config.toml
· settings: ~\.codewhale\settings.toml
· sessions: ~\.codewhale\sessions
· logs: ~\.deepseek\logs
· automations: ~\.deepseek\automations
· task_manager_root: ~\.codewhale\tasks
· task_manager_tasks: ~\.codewhale\tasks\tasks
· task_manager_artifacts: ~\.codewhale\tasks\artifacts
· runtime_store: ~\.codewhale\tasks\runtime
· runtime_events: ~\.codewhale\tasks\runtime\events
· personal_fleet_definitions: ~\.codewhale\fleets
· personal_fleet_agents: ~\.codewhale\agents
· secrets: ~\.codewhale\secrets\secrets.json
Secret Backend (structural only):
· backend: file
· presence: present (metadata_only)
· path: C:\Users\Danil\.codewhale\secrets\secrets.json
· legacy_path: C:\Users\Danil\.deepseek\secrets\secrets.json (present, metadata_only)
· No credential-store values were read or printed by this check.
State Root:
active: ~\.codewhale
dual roots: ~\.codewhale (primary) + ~\.deepseek (legacy)
! legacy state needs review:
! ~\.deepseek\tasks exists alongside primary ~\.codewhale\tasks; legacy data may still need review
! ~\.deepseek\skills exists alongside primary ~\.codewhale\skills; legacy data may still need review
! ~\.deepseek\config.toml exists alongside primary ~\.codewhale\config.toml; legacy data may still need review
! ~\.deepseek\mcp.json exists but ~\.codewhale\mcp.json is missing
Start Codewhale once to trigger safe migration where available, then rerun `codewhale doctor`.
✓ legacy sessions: all 8 filename(s) have regular-file counterparts under ~\.codewhale\sessions; descriptor contents were not compared and legacy originals remain preserved
Doctor inspected filenames and filesystem metadata only; it did not read chat contents, traverse checkpoints, or modify session files.
Setup State:
· source: persisted
· credential: source=config_declared, availability=present
✓ first-run: ready
✓ update checkpoint 0.9.4: ready
! operate/fleet: needs action
· constitution autonomy: unspecified (guidance only)
· runtime posture: default_mode=agent (settings), permission_posture=full-access (settings), approval_policy=on-request (default), allow_shell=true (interactive default), sandbox=mode-derived (default), network.default=prompt (default), telemetry=on (env), trust=workspace not elevated
· control socket: control_socket=off (default)
· next actions: /constitution (standing law), /setup report (readiness), /setup provider or /provider setup <name> (provider credentials), /model (route), /config (runtime posture), /setup fleet (Operate/Fleet readiness), /fleet setup (explicit profile authoring), /setup hotbar (optional shortcuts), /setup tools (Tools/MCP readiness), /setup remote (remote runtime on-ramp), /setup persistence (path review)
· language: verified (required, inherited, no result)
· provider_model: verified (required, 0.9.4, provider=deepseek, model=deepseek-flash, context_window=1000000 (catalog) auth=key saved · not checked, health=attemptable)
· trust_sandbox: verified (required, inherited, no result)
· constitution: verified (required, 0.9.4, checkpoint deferred; bundled applies)
· operate_fleet: not_started (optional, unversioned, no result)
· hotbar: not_started (optional, unversioned, no result)
· tools_mcp: not_started (optional, unversioned, no result)
· remote_runtime: not_started (optional, unversioned, no result)
· persistence: not_started (optional, unversioned, no result)
· verification: needs_action (optional, 0.8.67, first_run=needs_action, update=needs_action, operate=needs_action, constitution=Unset, autonomy=unspecified or bundled/default, posture=Inherited, runtime=intent=operate, approval=ask, shell=enabled, trust=workspace, sandbox=default, network=prompt by default, operate_fleet=provider=ready, runtime=ready, roster=ready, concurrency=configured launch_concurrency=64; max_subagents=64; admission=1024; plan limit not probed)
Fleet roster layers:
· no profile id is defined in more than one layer
API Keys:
· deepseek: env_source=not inspected, config_source=declared (value not inspected)
· deepseek-anthropic: env_source=not inspected, config_source=not declared
· nvidia-nim: env_source=not inspected, config_source=not declared
· openai: env_source=not inspected, config_source=not declared
· atlascloud: env_source=not inspected, config_source=not declared
· wanjie-ark: env_source=not inspected, config_source=not declared
· volcengine: env_source=not inspected, config_source=not declared
· openrouter: env_source=not inspected, config_source=declared (value not inspected)
· orcarouter: env_source=not inspected, config_source=not declared
· xiaomi-mimo: env_source=not inspected, config_source=not declared
· novita: env_source=not inspected, config_source=not declared
· fireworks: env_source=not inspected, config_source=not declared
· siliconflow: env_source=not inspected, config_source=not declared
· arcee: env_source=not inspected, config_source=not declared
· siliconflow-CN: env_source=not inspected, config_source=not declared
· moonshot: env_source=not inspected, config_source=not declared
· sglang: env_source=not inspected, config_source=not declared
· vllm: env_source=not inspected, config_source=not declared
· ollama: env_source=not inspected, config_source=not declared
· ollama-cloud: env_source=not inspected, config_source=not declared
· huggingface: env_source=not inspected, config_source=not declared
· together: env_source=not inspected, config_source=not declared
· qianfan: env_source=not inspected, config_source=not declared
· openai-codex: env_source=not inspected, config_source=not declared
· anthropic: env_source=not inspected, config_source=not declared
· openmodel: env_source=not inspected, config_source=not declared
· zai: env_source=not inspected, config_source=not declared
· stepfun: env_source=not inspected, config_source=not declared
· minimax: env_source=not inspected, config_source=not declared
· minimax-anthropic: env_source=not inspected, config_source=not declared
· deepinfra: env_source=not inspected, config_source=not declared
· sakana: env_source=not inspected, config_source=not declared
· longcat: env_source=not inspected, config_source=not declared
· opencode-go: env_source=not inspected, config_source=not declared
· opencode-zen: env_source=not inspected, config_source=not declared
· meta: env_source=not inspected, config_source=not declared
· xai: env_source=not inspected, config_source=not declared
· mistral: env_source=not inspected, config_source=not declared
· telecomjs: env_source=not inspected, config_source=not declared
· modelstudio-token-plan: env_source=not inspected, config_source=not declared
· modelstudio-token-plan-anthropic: env_source=not inspected, config_source=not declared
· modelstudio-coding-plan: env_source=not inspected, config_source=not declared
· modelstudio-coding-plan-anthropic: env_source=not inspected, config_source=not declared
· modelscope: env_source=not inspected, config_source=not declared
· google: env_source=not inspected, config_source=not declared
· edenai: env_source=not inspected, config_source=not declared
· zenmux: env_source=not inspected, config_source=not declared
· csdn: env_source=not inspected, config_source=not declared
· concentrate: env_source=not inspected, config_source=not declared
· codewhale: env_source=not inspected, config_source=not declared
· custom: env_source=not inspected, config_source=not declared
· credential precedence is unchanged; doctor does not inspect credential values
External credential consent (configuration only):
openai-codex: access=disabled, provider=openai-codex, source=codex_cli, owner=Codex CLI, path="C:\\Users\\Danil\\.codex\\auth.json", version=1, state=dormant, ambient_path_changed=false
semantics: disabled; no external-credential probing, reading, refresh, discovery, identity-provider or network acquisition, writes, or rewrites; normal requests to the explicitly selected provider may use Codewhale-owned credentials
revoke: codewhale auth external-revoke --provider openai-codex
xai: access=disabled, provider=xai, source=grok_cli, owner=Grok CLI, path="C:\\Users\\Danil\\.grok\\auth.json", version=1, state=dormant, ambient_path_changed=false
semantics: disabled; no external-credential probing, reading, refresh, discovery, identity-provider or network acquisition, writes, or rewrites; normal requests to the explicitly selected provider may use Codewhale-owned credentials
revoke: codewhale auth external-revoke --provider xai
deepseek: access=disabled, provider=deepseek, source=dsh_cli, owner=DeepSeek Harness, path="C:\\Users\\Danil\\.dsh\\.credentials.yaml", version=1, state=dormant, ambient_path_changed=false
semantics: disabled; no external-credential probing, reading, refresh, discovery, identity-provider or network acquisition, writes, or rewrites; normal requests to the explicitly selected provider may use Codewhale-owned credentials
revoke: codewhale auth external-revoke --provider deepseek
DeepSeek Harness integration (read-only detection):
state: not-installed
not installed — `dsh` not on PATH; connect later with `codewhale integrations dsh connect`
owned files: ~\.codewhale\integrations\dsh (overlay absent)
· active provider credential source: literal config value structurally present
· active provider credential availability: present
API Connectivity:
· scope: configured route — what a session launched now would use; a running session keeps the route it resolved at launch (its TUI header shows the live route)
· provider: deepseek
· base_url: https://api.deepseek.com
· model: deepseek-flash (resolved)
· strict_tool_mode: disabled
· Live hosted connectivity not checked (offline default)
Run `codewhale doctor --probe-api` to opt in.
Search Provider Reachability:
· not checked (offline default)
Run `codewhale doctor --probe-search` to test the selected provider authority.
MCP Servers (configuration only):
· Static check only; no server process was started.
✓ MCP feature flag enabled
✓ MCP config found at ~\.deepseek\mcp.json
· Project MCP config not found at \\?\C:\AiProjects\.codewhale\mcp.json
· 1 merged server(s) configured
! example: configuration warning; stdio server uses a relative path argument without cwd; argument values omitted
disabled; live health not checked
Use codewhale doctor --probe-mcp to opt in to live process/protocol checks; it may start configured servers.
Skills:
· local skills dir not found at C:\AiProjects\skills
· .agents skills dir not found at C:\AiProjects\.agents\skills
· global .agents skills dir not found at ~\.agents\skills
✓ global skills dir found at ~\.codewhale\skills (52 items)
· selected skills dir: ~\.codewhale\skills
Tools:
✓ tools dir found at ~\.codewhale\tools (2 items)
Plugins:
✓ plugins dir found at ~\.codewhale\plugins (2 items)
Storage:
✓ tool-output spillover at ~\.deepseek\tool_outputs (0 files)
· composer stash empty (Ctrl+G or Ctrl+S in the composer to park a draft)
Tool Dependencies:
✓ Python: python3 → code_execution tool registered
✓ Node.js: present → js_execution tool registered
· pandoc: not found (optional)
pandoc_convert tool is NOT advertised to the model. Install pandoc to enable:
winget install JohnMacFarlane.Pandoc
· tesseract: not found (optional)
image_ocr tool is NOT advertised to the model. Install tesseract to enable:
winget install UB-Mannheim.TesseractOCR
· pdftotext: not found (optional; PDF text reads fail as `binary_unavailable`)
Install Poppler for Windows from https://blog.alivate.com.au/poppler-windows/
Terminal Quirks:
· no env-driven terminal-quirk overrides active
Platform:
OS: windows
Arch: x86_64
! sandbox not available (commands run best-effort)
Before you start
What happened? 发生了什么?
In Codewhale (Windows) copy/paste is not properly implemented.
If I "copy" several lines in clipboard and then I do a "paste" in Codewhale TUI, the lines are sent to LLM as separated prompts, while they should be managed as ONE prompt.
This feature is managed properly in other harness (see example below).
If I "paste" in Codewhale 24 lines they will be treated by the LLM as 24 consecutive prompts and will try to answer to each of them: a real nightmare. I don't know if this problem is related to Windows or nobody is using copy/paste in Codewhale but this issue is really annoying.
Steps to reproduce 复现步骤
Codewhale version 版本
codewhale 0.10.0
Where did it happen? 在哪里出现?
TUI (terminal interface)
Operating system 操作系统
Windows
How did you get Codewhale? 获取方式
npm
Provider and model 提供商和模型
No response
Terminal and shell 终端
Windows Terminal + Power shell
codewhale doctor (optional)
Logs, screenshots, anything else (optional)
No response