tinyhumansai/openhuman · error

Unknown stash action: {action}. Use: push, pop, list, drop

Error message

Unknown stash action: {action}. Use: push, pop, list, drop

What it means

git_stash matched the action string against push/save, pop, list and drop and found no match, so no stash subcommand can be chosen and the request is rejected before invoking git.

Source

Thrown at src/openhuman/tools/impl/filesystem/git_operations.rs:416

            .get("action")
            .and_then(|v| v.as_str())
            .unwrap_or("push");

        let output = match action {
            "push" | "save" => {
                self.run_git_command_in(cwd, &["stash", "push", "-m", "auto-stash"])
                    .await
            }
            "pop" => self.run_git_command_in(cwd, &["stash", "pop"]).await,
            "list" => self.run_git_command_in(cwd, &["stash", "list"]).await,
            "drop" => {
                let index_raw = args.get("index").and_then(|v| v.as_u64()).unwrap_or(0);
                let index = i32::try_from(index_raw)
                    .map_err(|_| anyhow::anyhow!("stash index too large: {index_raw}"))?;
                self.run_git_command_in(cwd, &["stash", "drop", &format!("stash@{{{index}}}")])
                    .await
            }
            _ => anyhow::bail!("Unknown stash action: {action}. Use: push, pop, list, drop"),
        };

        match output {
            Ok(out) => Ok(ToolResult::success(out)),
            Err(e) => Ok(ToolResult::error(format!("Stash {action} failed: {e}"))),
        }
    }
}

#[async_trait]
impl Tool for GitOperationsTool {
    fn name(&self) -> &str {
        "git_operations"
    }

    fn description(&self) -> &str {
        "Perform structured Git operations (status, diff, log, branch, commit, add, checkout, stash). Provides parsed JSON output and integrates with security policy for autonomy controls."
    }

View on GitHub (pinned to 7491200858)

Solutions

  1. Use action 'push' (alias 'save'), 'pop', 'list', or 'drop'
  2. For dropping a specific stash, also pass a numeric index in the index field
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/openhuman/tools/impl/filesystem/git_operations.rs:416 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/927d9d455b41c5e1. Report an issue: GitHub.