Skip to main content

How it works

Teach, rank, inject, and block. Cloud is not on the agent hot path.
1 min read

Teach#

Write taste in the dashboard, with stacktaste learn, or by correcting Cursor. The stop hook harvests “do not use X” into a proposed item.

Nothing is live for the team until someone accepts it — dashboard, stacktaste review accept, or MCP taste_review.

Rank#

@stacktaste/core ranks locally. No embeddings. Blocking policies always go first, then a character budget by authority, confidence, recency, and path match.

Inject#

Three paths, same ranking:

PathWhen
Cursor hookssessionStart, beforeSubmitPrompt, afterFileEdit
MCP taste_contextAgent calls the tool
.cursor/rules/stacktaste.mdcRegenerated on pull, sync, review, and learn

Cloud is not required for inject if .stacktaste/ exists.

Block#

preToolUse, beforeShellExecution, and beforeMCPExecution deny a matching tool, shell, or MCP call.

The user sees a StackTaste Alert with the policy title and the full reason. The agent is told not to retry or work around it, and to ask if they want a one-off exception.

Warning

A chat “yes” does not lift the block. Accept an exception from review or the dashboard. Exceptions are long-lived taste items — they do not expire, and they do not turn the original policy off by themselves today.

Check#

stacktaste check pulls if local files are behind, then scans changed files against blocking policies.