Skip to content

feat: help text lists only 28 builtins but 109 are implemented #335

@chaliy

Description

@chaliy

Summary

The `BashTool` help text and system prompt only list 28 builtins:

```
echo cat grep sed awk jq curl head tail sort uniq cut tr wc date sleep mkdir rm cp mv touch chmod printf test [ true false exit cd pwd ls find xargs basename dirname env export read
```

But 109 builtins are actually implemented. This means agents don't know they can use `tar`, `gzip`, `stat`, `base64`, `seq`, `tee`, `diff`, `comm`, `column`, `git`, `python`, `jq`, `rev`, `tac`, `expr`, `nl`, `od`, `xxd`, `strings`, `file`, `realpath`, `mktemp`, `timeout`, `getopts`, `declare`, `pushd`/`popd`, etc.

Impact

Agents will use workarounds (like awk-based hacks) instead of purpose-built builtins they don't know about. This directly reduces agent capability.

Location

`crates/bashkit/src/tool.rs:46`:
```rust
const BUILTINS: &str = "echo cat grep sed awk jq curl head tail sort uniq cut tr wc date sleep mkdir rm cp mv touch chmod printf test [ true false exit cd pwd ls find xargs basename dirname env export read";
```

And `BASE_HELP` at line 49 repeats the same short list.

Fix

Update `BUILTINS` const and help text to include all 109 builtins, organized by category as in `lib.rs` line 20-34.

Acceptance criteria

  • `BUILTINS` const lists all implemented builtins
  • `help()` output organized by category
  • `system_prompt()` includes full builtin list
  • Custom builtins (from `BashToolBuilder`) still appear in help

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions