Back to Plugins

opencode-shell-strategy

Instructions for non-interactive shell commands - prevents hangs from TTY-dependent operations

View on GitHub

opencode-shell-strategy

OpenCode instructions for non-interactive shell commands - prevents hangs from TTY-dependent operations.

Problem

OpenCode's shell environment is strictly non-interactive. It lacks a TTY/PTY, meaning any command that waits for user input, confirmation, or launches a UI (editor/pager) will hang indefinitely and timeout.

Standard AI models often assume a human is watching the terminal or that they can use interactive tools like nano, vim, or answer "y/n" prompts. In OpenCode's headless environment, these actions cause the agent to hang.

Solution

This plugin provides instructions that teach the LLM to:

  • Always use non-interactive flags (e.g., -y, --no-edit)
  • Bypass prompts using yes | or heredocs
  • Avoid TTY-dependent tools (editors, pagers)
  • Prefer OpenCode's native tools (Read/Write/Edit) over shell manipulation

Installation

1. Clone the repository

git clone https://github.com/JRedeker/opencode-shell-strategy.git ~/.config/opencode/plugin/shell-strategy

2. Add to OpenCode config

Add the instruction file to your ~/.config/opencode/opencode.json:

{
  "instructions": [
    "~/.config/opencode/plugin/shell-strategy/shell_strategy.md"
  ]
}

3. Restart OpenCode

The rules will be automatically loaded at the start of every session.

What It Covers

Package Managers

ToolBad (hangs)Good
npmnpm initnpm init -y
aptapt-get install pkgapt-get install -y pkg
pippip install pkgpip install --no-input pkg

Git Operations

ActionBad (hangs)Good
Commitgit commitgit commit -m "msg"
Mergegit merge branchgit merge --no-edit branch
Addgit add -pgit add .

System Commands

ToolBad (hangs)Good
rmrm file (prompts)rm -f file
sshssh hostssh -o BatchMode=yes host
unzipunzip file.zipunzip -o file.zip

Banned Commands

These will always hang - never use them:

  • vim, nano, vi (editors)
  • less, more, man (pagers)
  • git add -p, git rebase -i (interactive modes)
  • python without -c flag (REPL)

License

MIT