bash-tool
Creates a bash tool environment with specified files for code execution.
by Vercel, Inc.
Invalid AI SDK tool structure (missing description or execute)
Last checked: 1/16/2026, 3:45:29 AM
Test bash-tool (createBashTool) with AI-powered execution
0/2000 characters
Install this tool and use it with the AI SDK
npm install bash-toolpnpm add bash-toolyarn add bash-toolbun add bash-tooldeno add npm:bash-toolimport { createBashTool } from 'bash-tool';import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
import { createBashTool } from 'bash-tool';
const result = await generateText({
model: openai('gpt-4o'),
tools: { createBashTool },
prompt: 'Your prompt here...',
});
console.log(result.text);How AI agents can use this tool
Use this tool to execute bash commands and manipulate files within a sandboxed environment.
Available configuration options
filesobjectAn object containing file paths as keys and file contents as values.
Schema extracted: 1/16/2026, 1:01:41 AM
Try to auto-extract schema from the package
Generic bash tool for AI agents, compatible with AI SDK.
npm install bash-tool just-bash
For full VM support, install @vercel/sandbox or another sandbox product instead of just-bash.
import { createBashTool } from "bash-tool"; import { ToolLoopAgent, stepCountIs } from "ai"; const { tools } = await createBashTool({ files: { "src/index.ts": "export const hello = 'world';", "package.json": '{"name": "my-project"}', }, }); const agent = new ToolLoopAgent({ model: yourModel, tools, // Or use just the bash tool as tools: {bash: tools.bash} stopWhen: stepCountIs(20), }); const result = await agent.generate({ prompt: "Analyze the project and create a summary report", });
The tools object contains three tools that can be used by AI agents:
bashExecute bash commands in the sandbox environment. For analysis agents, this may be the only tool you need to give to the agent.
Input:
command (string): The bash command to executeReturns:
stdout (string): Standard output from the commandstderr (string): Standard error from the commandexitCode (number): Exit code of the commandreadFileRead the contents of a file from the sandbox.
Input:
path (string): The path to the file to readReturns:
content (string): The file contentswriteFileWrite content to a file in the sandbox. Creates parent directories if needed.
Input:
path (string): The path where the file should be writtencontent (string): The content to write to the fileReturns:
success (boolean): true if the write succeededconst { bash } = await createBashTool({ uploadDirectory: { source: "./my-project", include: "**/*.{ts,json}", // optional glob filter }, });
import { Sandbox } from "@vercel/sandbox"; const sandbox = await Sandbox.create(); // Files are written to ./workspace by default const { tools } = await createBashTool({ sandbox, files: { "index.ts": "console.log('hello');" }, });
Use Sandbox.get to reconnect to an existing sandbox by ID:
import { Sandbox } from "@vercel/sandbox"; // First invocation: create sandbox and store the ID const newSandbox = await Sandbox.create(); const sandboxId = newSandbox.sandboxId; // Store sandboxId in database, session, or return to client // Subsequent invocations: reconnect to existing sandbox const existingSandbox = await Sandbox.get({ sandboxId }); const { tools } = await createBashTool({ sandbox: existingSandbox }); // All previous files and state are preserved
import { Bash } from "just-bash"; const sandbox = new Bash({ cwd: "/app" }); const { tools } = await createBashTool({ sandbox, destination: "/app", });
const { tools } = await createBashTool({ onBeforeBashCall: ({ command }) => { console.log("Running:", command); // Optionally modify the command if (command.includes("rm -rf")) { return { command: "echo 'Blocked dangerous command'" }; } }, onAfterBashCall: ({ command, result }) => { console.log(`Exit code: ${result.exitCode}`); // Optionally modify the result return { result: { ...result, stdout: result.stdout.trim() } }; }, });
import { createBashTool, Sandbox } from "bash-tool"; const customSandbox: Sandbox = { async executeCommand(command) { // Your implementation here return { stdout: "", stderr: "", exitCode: 0 }; }, async readFile(path) { // Your implementation here return ""; }, async writeFile(path, content) { // Your implementation here }, }; const { tools } = await createBashTool({ sandbox: customSandbox });
For AI agents working with bash-tool, additional guidance is available in AGENTS.md:
cat node_modules/bash-tool/dist/AGENTS.md
MIT
Downloads/month
0
GitHub Stars
0
Quality Score