Cowork scheduled tasks: SKILL.md with CRLF line endings causes empty description and update_scheduled_task parse failure
Resolved 💬 5 comments Opened Mar 21, 2026 by jmylot Closed May 16, 2026
## Summary
When a SKILL.md file for a Cowork scheduled task is written with CRLF line endings (Windows-style), the Cowork scheduled task YAML frontmatter parser fails silently, causing two symptoms:
list_scheduled_tasksreturns an emptydescriptioneven though the SKILL.md frontmatter contains a validdescriptionfield.update_scheduled_taskwithdescriptionorpromptfields fails with "Could not parse task file: unexpected format" — whilecronExpressionupdates on the same task succeed.
Environment
- OS: Windows 11 Pro
- Claude Desktop: Latest (Cowork mode / scheduled tasks)
- Affected MCP tools:
mcp__scheduled-tasks__list_scheduled_tasks,mcp__scheduled-tasks__update_scheduled_task - Root cause: SKILL.md written via Windows MCP FileSystem
writemode uses CRLF (\r\n) line endings; Cowork YAML parser requires LF (\n) only
Steps to Reproduce
- Create a scheduled task with
create_scheduled_task(succeeds — SKILL.md created with LF). - Edit the resulting SKILL.md using the Windows MCP FileSystem
writemode — this writes CRLF line endings on Windows. - Call
list_scheduled_tasks→ the task'sdescriptionfield returns empty string, even though the SKILL.md frontmatter is syntactically valid YAML. - Call
update_scheduled_taskwithdescription: "some text"→ returns error: "Could not parse task file: unexpected format". - Call
update_scheduled_taskwithcronExpression: "0 5 * * *"→ succeeds (only modifiesscheduled-tasks.json, does not re-parse SKILL.md).
Diagnosis
Comparing first bytes of a working vs. broken SKILL.md:
- Working (LF):
2D 2D 2D 0A(---\n) - Broken (CRLF):
2D 2D 2D 0D(---\r) followed by0A
The YAML frontmatter parser appears to treat \r as an unexpected character, causing a silent parse failure. Removing notifySessionId from scheduled-tasks.json was not sufficient — only converting the SKILL.md to LF resolved the issue.
Expected Behavior
One or more of the following:
- The YAML frontmatter parser should accept both LF and CRLF (YAML 1.2 spec allows both)
update_scheduled_taskerror message should hint at the root cause (e.g., "SKILL.md line endings must be LF")- Windows MCP FileSystem
writetool should produce LF line endings when writing files in the Scheduled tasks directory, consistent withcreate_scheduled_task
Workaround
Write SKILL.md using PowerShell with explicit LF encoding:
$utf8NoBom = New-Object System.Text.UTF8Encoding $false
$content = $content -replace "`r`n", "`n"
[System.IO.File]::WriteAllText($skillPath, $content, $utf8NoBom)
Related
- Issue #36491 (separate bug: UTF-8 corruption in .md files) — same environment
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗