is-cli-agentic
public evidence reportnpm/opencode-ai

opencode

does not hang when stdin is a non-delivering pipe: HANGS - agent blocks forever

markdown report
agent verdictunrankedfewer than 3 identical trials
deterministic facts30/100informational · never used for rank
rubricv1.0.0N/A never penalizes

agent trajectory

Awaiting three identical trials

Deterministic observations can identify likely friction, but they cannot license the claim that an agent passed or failed.

deterministic evidence · not the rank

Every check, its evidence, and the fix

facts 30/100

N/A is excluded from both numerator and denominator. Open a check to inspect what the probe observed.

D1

Legibility

can an agent learn this tool from its own surface?

4/15 · 27%
failD1.1machine-readable schema (`schema` / `--describe` returns JSON)0/8
evidence

no capability document; agent must parse help prose

concrete fix

Add a `schema` or `--describe` command that prints the complete command, option, input, and output schema as JSON.

passD1.2exposes an MCP surface4/4
evidence

yes

failD1.3help contains usage examples0/3
evidence

no

concrete fix

Add copy-pasteable examples to top-level and subcommand help, including one successful machine-readable invocation.

D2

Structured I/O

is the output machine-parseable?

0/20 · 0%
failD2.1documents a JSON output mode0/10
evidence

no machine-parseable output documented

concrete fix

Add and document `--json` or `--output json`, then keep its keys and types stable for scripts and agents.

failD2.2no ANSI escapes when the stream is piped0/5
evidence

leaks colour codes into agent context

concrete fix

Detect non-TTY output and disable color, cursor movement, spinners, and other ANSI escapes automatically.

failD2.3has a quiet mode0/5
evidence

no

concrete fix

Add `--quiet` (or `--no-progress`) so stdout can contain only the requested result.

D3

Non-blocking

does it ever hang when no human is present?

4/20 · 20%
failD3.1does not hang when stdin is a non-delivering pipe0/8
evidence

HANGS - agent blocks forever

concrete fix

When stdin is not a TTY, fail fast instead of prompting; document a `--non-interactive` or `--yes` escape hatch.

passD3.2--help does not hang4/4
evidence

ok

failD3.3documents a non-interactive escape hatch0/4
evidence

no

concrete fix

Document a non-interactive mode that supplies defaults or exits with an actionable error whenever input is missing.

failD3.4cold invocation under 3s0/4
evidence

8.01s

concrete fix

Defer plugins, updates, auth, and network initialization until after argument parsing so a cold invocation returns within 3 seconds.

D4

Context economy

how many tokens does it cost to use?

10/15 · 67%
partialD4.1help fits an agent context budget3/8
evidence

4285 bytes (~1071 tokens)

concrete fix

Keep top-level help concise and move detail into subcommand help or machine-readable schema output.

passD4.2does not reprint full help on every mistake7/7
evidence

99 bytes

D6

Safety rails

can an agent preview before it destroys?

0/10 · 0%
failD6.1offers a dry-run0/5
evidence

no

concrete fix

Add `--dry-run` to mutating commands; validate locally and print the exact planned changes without making network calls.

failD6.2offers an explicit confirmation bypass0/5
evidence

no

concrete fix

Add an explicit `--yes` confirmation bypass that is safe to use only when every required value is supplied.

D7

Error recovery

does a mistake produce an honest, actionable signal?

12/20 · 60%
failD7.1unknown subcommand exits non-zero0/8
evidence

exit 0 — SILENT FAILURE

concrete fix

Return a non-zero exit code for unknown subcommands and name the closest valid subcommand on stderr.

passD7.2unknown flag exits non-zero8/8
evidence

exit 1

passD7.3error message is terse4/4
evidence

99 bytes

D9

Cold credentials

can an agent get authenticated without a human?

6/20 · 30%
failD9.1names its credential env var in its own help surface0/6
evidence

agent must already know the variable name; undiscoverable from --help

concrete fix

Name the supported credential environment variable in `--help`, including its precedence over config files.

failD9.2offers a no-account or temporary-account path0/8
evidence

no; the agent stops at the signup wall

concrete fix

Offer a documented temporary, guest, or claim-later path so a cold agent can complete one useful task without signup.

passD9.3does not launch a browser auth flow in a headless context6/6
evidence

ok