
Security News
Happy Birthday, Shai-Hulud
It has been one year since Shai-Hulud made its first appearance on npm.
@beremaran/opencode-goal
Advanced tools
A persistent /goal workflow for OpenCode: define a
completion condition once, let OpenCode work across turns, and stop only when
an independent evaluator finds enough evidence that the condition is
satisfied.
The plugin combines:
Requires OpenCode 1.18 or newer.
Add the npm package to your opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["@beremaran/opencode-goal"]
}
Restart OpenCode. OpenCode installs npm plugins automatically when it starts.
/goal all authentication tests pass and lint is clean
/goal --tokens 100k migrate every call site and make the build pass
/goal --max-turns 20 diagnose and fix the intermittent queue test
Control the current session goal with:
/goal Show status, elapsed time, turns, tokens, and the last evaluation
/goal pause Pause automatic continuation
/goal resume Resume work immediately
/goal clear Remove the session goal
/goal help Show command syntax
An explicit budget is optional. Without --tokens or --max-turns, the goal
remains active until it completes, is paused, is cleared, or is marked blocked.
/goal.evaluatorModelsmall_modelsession.promptAsync(), starting the next turn.The plugin also exposes two model tools:
get_goal returns the current state and remaining budget.update_goal records a completion claim for independent evaluation, or marks
a genuinely repeated blocker after at least three goal turns.Active goal context is re-injected into system prompts and compaction context. Interrupting an OpenCode response pauses the goal so pressing Escape does not immediately restart it.
Plugin options can be supplied in an OpenCode plugin entry:
{
"plugin": [
[
"@beremaran/opencode-goal",
{
"evaluatorModel": "anthropic/claude-haiku-4-5",
"maxTranscriptChars": 48000,
"continuationDelayMs": 250,
"defaultTokenBudget": 200000,
"defaultMaxTurns": 50,
"deleteEvaluatorSessions": true,
"stateDirectory": "/custom/state/root"
}
]
]
}
All options are optional. By default, budgets are unbounded and evaluator sessions are deleted after use.
State is stored outside the repository under:
$XDG_STATE_HOME/opencode-goal/<project-id>/<session-id>.json
When XDG_STATE_HOME is unset, the root is
~/.local/state/opencode-goal.
/goal for status.git clone https://github.com/beremaran/opencode-goal.git
cd opencode-goal
npm install
npm run check
To load the checkout directly, add its absolute path to opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["/absolute/path/to/opencode-goal"]
}
Run npm run build and restart OpenCode after changing the plugin.
See CONTRIBUTING.md for the contribution workflow and RELEASING.md for maintainer release instructions.
The design follows OpenCode's documented
plugin hooks and
custom commands. Completion behavior is
modeled on Claude Code's documented
/goal loop, while persistence and
optional token budgeting follow Codex's goal lifecycle.
FAQs
Persistent, independently evaluated /goal workflows for OpenCode 2
The npm package @beremaran/opencode-goal receives a total of 34 weekly downloads. As such, @beremaran/opencode-goal popularity was classified as not popular.
We found that @beremaran/opencode-goal demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
It has been one year since Shai-Hulud made its first appearance on npm.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.

Security News
GitHub Actions now supports cache-mode, a least-privilege control on the Actions cache aimed at the cache poisoning technique behind recent compromises.