tinyhumansai/openhuman · error
'section_title' is required for 'replace_section' action
Error message
'section_title' is required for 'replace_section' action
What it means
The 'replace_section' action rewrites one titled section of MEMORY.md/SKILL.md, so it needs 'section_title' to locate the heading. This fires during argument validation after the write locks are acquired but before the file is read, when action=replace_section was given without a section_title string.
Source
Thrown at src/openhuman/tools/impl/filesystem/update_memory_md.rs:285
let lock = workspace_write_lock(&workspace_dir);
let _guard = lock.lock().await;
// Also take a cross-process advisory lock so cron subprocesses (which
// don't share the in-process mutex above) can't clobber the same file
// mid-RMW. Held across read + atomic write; released on drop.
let _file_lock = acquire_cross_process_write_lock(&workspace_dir).await?;
tracing::debug!(
workspace = %workspace_dir.display(),
"[update_memory_md] acquired per-workspace write lock (in-process + cross-process flock)"
);
match action {
"append" => self.do_append(&target_path, file, content).await,
"replace_section" => {
let section_title = args
.get("section_title")
.and_then(|v| v.as_str())
.ok_or_else(|| {
anyhow::anyhow!("'section_title' is required for 'replace_section' action")
})?;
self.do_replace_section(&target_path, file, section_title, content)
.await
}
other => Ok(ToolResult::error(format!(
"Unknown action '{other}'. Use 'append' or 'replace_section'."
))),
}
}
}
impl UpdateMemoryMdTool {
/// Append `content` to the end of `path`, creating the file if it does not exist.
async fn do_append(
&self,
path: &std::path::Path,
file: &str,
content: &str,View on GitHub (pinned to 7491200858)
Solutions
- Add "section_title" matching the markdown heading text of the section to replace
- Or switch to the append action if appending rather than replacing is intended
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/openhuman/tools/impl/filesystem/update_memory_md.rs:285 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/0331a8ccabecc013.
Report an issue: GitHub.