Taskless v0.13.6: Trust Prompts and Truthful Exit Codes

Jakob Heuser

0.13.6 is a patch release with four changesets. The installer now asks its own question before it changes your global agent settings, and verify stops reporting success for a rule that didn't run. The verify change can turn a passing script red, so look at anything that runs it bare. Upgrades also get smoother: the steps your agent hands you work outside a terminal, and your agent finishes the rules work once you've moved the CLI.

npx @taskless/cli

verify no longer passes a rule that didn't run

A runtime rule's fixtures only run with --dangerously-run-scripts, because running them executes the rule's check.ts. Without the flag they're skipped, and verify used to exit 0 and print ok: true anyway. CI and agents read a rule nothing exercised as a pass.

verify now has three outcomes:

Exit

Meaning

Top-level ok

0

Every requested rule ran and passed

true

1

At least one rule failed, even if others didn't run

false

2

Nothing failed, but at least one rule didn't run

false

A skipped rule looks like this, and that run exits 2:

○ runtime/rt-rule
fixtures did not run: running them executes the rule's check.ts. Pass --dangerously-run-scripts to run them.
0 rule(s) verified. 1 rule(s) did not run.

A project with no runtime rules sees no change. If yours has them and a script or hook runs a bare verify, that script needs to change. Pass --dangerously-run-scripts if it should run them, or name the static engine directories. Pre-commit hooks should name the directories, since --dangerously-run-scripts never belongs in a hook:

node .taskless/bin/cli.mjs verify .taskless/rules/sg
node .taskless/bin/cli.mjs verify .taskless/rules/vale

An engine directory with no rules passes, so keep both lines either way. The recipe your agent follows for hooks now writes these two lines, but a hook you've already installed isn't rewritten.

The installer asks before changing global settings

Taskless changes one file outside your project: ~/.claude/settings.json, where an entry lets Claude Code's auto mode run Taskless commands. That edit used to share one question with every other settings edit, so saying no to it cancelled the whole install.

It now gets its own question, after the summary and before anything is written. The question defaults to no, so pressing Enter leaves your settings alone. Above it, the installer shows the exact text of the entry and explains:

  • Why it's there. Auto mode judges each command as it sees it, so it can't see the version pinned in .taskless/taskless.json, and a project's own settings can't overrule it. That's also what stops a cloned repository from approving itself.
  • How far it reaches. The entry applies to every project on your machine, including a launcher at ./.taskless/bin/cli.mjs in a repository you clone, so review that script when you clone one.
  • How to undo it. Remove the entry at any time.
  • What skipping costs. Claude Code may stop to ask you to approve Taskless commands, or refuse them in auto mode.

Saying no still installs Taskless. The entry's text is the same as before, so one you already have stays as it is. A non-interactive install still never writes outside the project.

Your agent finishes the upgrade

0.13.5 taught agent ok to report when Taskless is out of date, and the steps it printed had a bug. They told you to run the CLI with no arguments, which only installs from a terminal. Anywhere else it printed the topic index and changed nothing. The steps now name init, which works in both. 0.13.5 still prints the old step, so if you're coming from that version, run the upgrade in a terminal.

Moving the CLI stays yours to do. Once you have, your agent runs agent ok again and applies the rules instructions itself instead of handing them back. If that command gets refused, it comes to you.

You can also decline. Your agent tells you what that means: the project stays on this CLI and keeps working, and the report keeps listing the upgrade until you move. Any rules owed on the current CLI still get applied, since check and verify refuse to run them until that's recorded.

agent ok also offers the upgrade the way your harness runs it:

Harness

Offered with

Claude Code CLI

!

OpenCode

!

Codex

!

Gemini CLI

!

Devin

!

Cursor

/shell, with a note that it stops a command after 30 seconds

Another terminal is always offered, and it's the only offer when the harness isn't recognized. That includes the Claude Code VS Code extension, which has no ! shortcut. The harness comes from a fixed table of environment variables and only changes the wording, so no value from your environment reaches the output.

On a project launcher run, the upgrade step now names npx rather than a placeholder.

New projects stop hearing their rules are out of date

Installing from the terminal never recorded that a new project had nothing to reconcile, so the first agent ok during onboarding asked for update --rules on a project with no rules. Installing now records it, and upgrading clears the message on any project that already has it and still has no rules.

The full changelog is on taskless/cli#611.

Getting it

npx @taskless/cli