process_start
Start interactive programs (SSH, GDB, REPLs) as managed subprocesses, returning process IDs for monitoring and I/O control.
Instructions
Start a subprocess for interactive use. Use this for interactive programs like SSH, GDB, psql, python REPL, etc. — not for simple one-shot commands. Returns the internal process ID, OS PID, and initial status.
pty — default false for backward compatibility; this is NOT a recommendation. Set true for anything interactive or TUI (ssh, gdb, psql/mysql, REPLs, vim, htop, top, less; anything with -i/-it/-t flags). Consult program_query for this executable BEFORE starting. When in doubt, true — a non-interactive program tolerates a PTY; an interactive one without one hangs. Exception: one-shot commands that page output (git log/diff, less) — prefer pipe mode with --no-pager/GIT_PAGER=cat.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Working directory. | |
| env | No | Environment variables (merged with current env). | |
| pty | No | Run on a virtual PTY instead of pipes. True for programs that need a terminal (see tool description). Default false for backward compatibility — NOT a recommendation. | |
| args | No | Command-line arguments. | |
| command | Yes | Executable or command to run. | |
| timeout_ms | No | Idle timeout in milliseconds. Process is killed and cleaned up if no tool interaction occurs for this duration. 0 = no timeout. |