Command Code

The Taste-Learning Harness · Deep-Dive DD-15 · Course 1

60 minutes · The first harness that learns your coding taste from accept/reject signals and persists it as Markdown

3,500+ stars. $5M seed. Closed-source TypeScript. A fundamentally new feedback model: the diff between generated and kept code becomes a preference that shapes every future output.

Deep-Dives

The thesis — learned preferences, a candidate sixth memory tier

Hermes (DD-08) learns PROCEDURES

Self-evolving skills: how to DO things. Reusable procedures that compound.

Command Code learns PREFERENCES

Self-evolving taste: how you WANT things done. Style constraints that shape every output.

Same compounding-memory insight, applied to a different layer. On Module 4's framework, taste is a candidate sixth tier: learned preferences derived from behavioral signal, distinct from both static memory (what you wrote) and episodic memory (what happened).

The taste loop — the 5-stage verifiable mechanism

StageWhat happensVerifiable?
1. Signal captureAccept/reject/edit produces a diff (generated vs. kept)Yes
2. Profile generationPrompt template turns diffs into preferencesYes (template exists)
3. PersistencePlain Markdown at .commandcode/taste/taste.mdYes
4. Server-side modelSynced to api.commandcode.ai; taste-1 runs hostedYes (traffic observed)
5. Sharingtaste push / taste pull (Git-style, Apache-2.0)Yes
Honest gap: marketing calls taste-1 "meta neuro-symbolic AI with continuous RL." The only verifiable mechanism is diff-driven Markdown updates + a hosted model. The RL/symbolic internals are not published. Treat the framing as vendor characterization.

Why diff is a better signal than thumbs-up/down

Thumbs up/down

Carries NO information about what was wrong. A thumbs-down tells the system nothing actionable.

Explicit feedback

Requires a SEPARATE action the user would not otherwise perform. Friction; rarely done.

Diff as signal

The user's edit is the GROUND TRUTH of what they wanted. Captured as a side-effect of editing already happening.

The diff is the feedback. No separate feedback action is required. The signal is cleaner, cheaper to capture, and higher-resolution than the alternatives.

Static memory vs. learned memory

Static memory

AGENTS.md, COMMANDCODE.md — what you WROTE. The project's explicit conventions. A new contributor reads this.

Learned memory

.commandcode/taste/taste.md — what the system INFERRED from your behavior. The residue of every accept/reject/edit. The system has already absorbed the team's taste.

The two layers compose. Same compounding insight as Hermes's skills, applied to preferences instead of procedures. Explicit compaction (MemorySelector, CompactAgent) handles long sessions by summarizing, not truncating.

The two novel security surfaces

Surface 1: Preference exfiltration

The taste profile syncs to api.commandcode.ai by design. Your coding patterns leave your machine. For a proprietary codebase, the profile is a distilled representation of how you want code written — itself valuable IP.

Surface 2: Preference poisoning

A poisoned preference COMPOUNDS — it shapes every future output, not just one entry. The same compounding property that makes taste learning valuable makes taste poisoning durable. As-built: no validation gate between inference and persistence.

Both surfaces compound. Ordinary memory poisoning (Module 4.3) persists one bad entry; preference poisoning persists one bad entry that influences every subsequent generation. The taste layer is a higher-stakes write surface than ordinary memory.

Score: 31/60 — wins on memory, loses on transparency

ModuleScoreKey decision
1 Loop4React+Ink TUI, ~22 tools, plan/explore subagents
2 Tools4~22, design-aware (16+ design verbs)
4 Memory4learned taste layer + static memory (novel 6th tier)
11 Observability2OpenTelemetry built in, but obfuscation blocks custom instrumentation
12 Prompt3closed-source; taste profile is prompt-shaped but not auditable
Highest on Module 4 (Memory): the taste system is a novel learned-memory layer. Loses points for closed-source distribution — the structural cost across the lower scores.

Architect's verdict & anti-patterns

Build on Command Code when personalization is the primary value and you trust the hosted model. Do not build on it for security-sensitive codebases without understanding what leaves your machine.
"The neuro-symbolic framing means it is safe." Treat it as vendor characterization. Verify the mechanism (diff to Markdown to hosted model) and judge the surfaces on that.
"Taste poisoning is the same as memory poisoning." It is not. Preference poisoning shapes every future output. Treat the taste layer as a higher-stakes write surface; add validation before persistence.
"The hosted model is just a convenience." It concentrates your proprietary signal on someone else's server. Do not deploy where the preference profile is itself the IP.

3 things it does better, 3 things to fix

Does better
  1. Taste learning — no other harness learns from accept/reject behavior
  2. Bundled design skills — 16+ design verbs (checkup, smell, review, deslop)
  3. Model breadth — Claude, GPT-5.x, Gemini, DeepSeek, Qwen, Kimi, GLM
To fix
  1. Open-source the harness — obfuscation means no audit
  2. Local taste model — hosted sync is an exfiltration surface
  3. Add harness-managed learning validation — prevent poisoned preferences compounding

What you can now do

  1. Explain the taste loop end-to-end and distinguish verifiable mechanism from vendor characterization.
  2. Articulate static vs. learned memory and place taste as a candidate sixth tier on Module 4.
  3. Analyze the two novel surfaces — preference exfiltration and preference poisoning — and why both compound.
  4. Defend "diff as learning signal" over thumbs-up/down and explicit feedback.
  5. Score Command Code (31/60), explain the wins (Memory) and losses (Observability, Prompt), and judge the closed-source tradeoff for a given deployment.
The lab: build a minimal taste-learning simulation — capture diffs, generate a Markdown profile, then inject a poisoned preference and watch it shape every subsequent output.

Next: DD-16 — ZeroClaw: The Rust Microkernel Harness