{"slug": "what-taste-1-actually-is-reading-the-command-code-1-58-0-npm-bundle", "title": "What taste-1 actually is — reading the command-code 1.58.0 npm bundle", "summary": "A developer's teardown of the command-code CLI npm package version 1.58.0 shows that its advertised \"taste-1\" meta neuro-symbolic AI model is not a trained model at all: the tool shells out to git to collect up to 200 commits' worth of before/after diff pairs, compiles them into a markdown prompt, sends that as a single user message to the same /alpha/generate endpoint used by ordinary requests, and writes the model's markdown output to .commandcode/taste/taste.md, which is then pasted back into the system prompt on later turns. The analysis found no embeddings and no weight updates, contradicting the vendor's documentation claim of a continuously learning RL-powered model.", "body_md": "Full teardown, including every system prompt, the three sources taste feeds on, the tool\ncatalogue, the wire protocol and the telemetry:\n[https://gist.github.com/safzanpirani/26170636512c0b50494d6a70acfece8d](https://gist.github.com/safzanpirani/26170636512c0b50494d6a70acfece8d)\n\nWeb version: [https://cmd.safzan.dev](https://cmd.safzan.dev)\n\nNotes from reading the `command-code` npm package (Command Code CLI), **version 1.58.0**,\n2026-09-19. Everything below is from the shipped bundle; line numbers are for `dist/cli.mjs`\nrun through `npx prettier --parser babel` (115,067 lines).\n\nReproduce with:\n\n```\nnpm i -g command-code@1.58.0\nnpx prettier --parser babel \\\n  \"$(npm root -g)/command-code/dist/cli.mjs\" > cli.pretty.mjs\n```\n\nNo unpacking needed — it is a plain minified ESM bundle, and esbuild's `--keep-names` is on, so\nevery function is wrapped in `__name(fn, \"originalName\")` and the original identifiers survive.\n\nFrom [https://commandcode.ai/docs/taste](https://commandcode.ai/docs/taste), and repeated verbatim in the CLI's own help text\n(`:64741`) and FAQ (`:9371`).\n\nArchived copies, in case the page changes — the claim is present in every Wayback snapshot of this page from 2025-12-09 onward, so it is a long-standing position rather than a recent edit:\n\n- [2026-09-07](https://web.archive.org/web/20260907191124/https://commandcode.ai/docs/taste) (most recent capture)\n- [2026-03-13](https://web.archive.org/web/20260313174739/https://commandcode.ai/docs/taste)\n- [2025-12-09](https://web.archive.org/web/20251209084020/https://commandcode.ai/docs/taste) (earliest capture)\n\nThe text:\n\n\"Taste is powered by our meta neuro-symbolic AI model **taste-1** with continuous reinforcement\nlearning (RL). We combine reasoning with neural intuition to create an invisible architecture\nof your choices, structures, patterns and tooling preferences.\"\n\nThe docs page bullets:\n\n- \"**Continuously learning** side learns the texture of your code (explicit & implicit feedback).\"\n- \"**Meta Neuro-Symbolic AI model taste-1** enforces the invisible logic of your choices.\"\n- \"**Reflective Context Engineering** of a self-aware RL feedback loop to build skills.\"\n\nIt also embeds an architecture diagram at `/docs/mns.png` whose alt text is\n`meta neuro-symbolic ai model taste-1`.\n\n`runTasteLearningAgent` (`:55352`) and `compileTasteContext` (`:55686`):\n\n1. \n**Shell out to git.**`collectCommits` +`getSubstitutions` run`git show --format= -U3 --diff-algorithm=histogram -b --ignore-blank-lines -M <hash>` over up to 200 commits and extract before→after line pairs.\n2. \n**Build a prompt.**`compileTasteContext` concatenates those hunks into a markdown document\nheaded`# Dynamic Taste Analysis — Code Change Patterns` and`## Correction Diffs — What Wrong→Right Looks Like` , ending with:`## Instructions for Taste Learning`` You are analyzing code change patterns from a real repository. Based on the correction diffs above, generate deeply personal and opinionated coding taste.`followed by eight numbered style guidelines (\"Be specific, not generic,\" \"Extract the WHY from patterns,\" \"Capture anti-patterns too\"…).\n3. \n**Send it to an ordinary model.** That string becomes a single`role:\"user\"` message on a\nnormal session, posted to the same`/alpha/generate` endpoint every other request uses, on\nwhatever model is currently selected:\n\n``` js\nconst o = await e.createSession({ sessionId: …, baseUrl: t.getApiBaseUrl() });\no.setState({ state: { …, messages: [\n  { role: \"user\", content: [{ type: \"text\", text: e.compiledContext }] } ] } });\nawait o.learn({ outputDir: e.outputDir });\n```\n\n4. \n**The model writes markdown.** Output lands in`.commandcode/taste/taste.md` .\n5. \n**The file is pasted back into the system prompt** on every later turn\n(`renderTasteSection2` ,`:35886` ):\n\n```\n<taste>\nBelow is the complete content of the .commandcode/taste/taste.md file.\n…\n</taste>\n```\n\ngit diffs → a prompt → an ordinary model → a markdown file → prompt prepending.\n\nNo embeddings. No weight updates. No RL loop. No symbolic component. No distinct model.\nIt is the `CLAUDE.md` / `AGENTS.md` pattern with an automated first draft.\n\nExactly one place — the TUI status bar (`:97801`):\n\n```\ny = Boolean(o && byokProviderId({ model: o })) ? \"\" : \" · taste-1\",\n```\n\nA literal string appended whenever you are **not** on BYOK. Configure your own provider and the\nbadge disappears while the feature behaves identically. It labels whichever model you picked\n(`claude-sonnet-4-6`, `moonshotai/Kimi-K2.5`, …). It never names one.\n\nGrep the bundle for `taste-1` and you get four hits: this line, the FAQ string, the help string,\nand the billing string below. There is no model id, no routing entry, no catalog record.\n\nFrom the plans help text (`:64749`):\n\n\"Premium requests: Any request that uses a premium model (like taste-1) during your coding session.\"\n\nClassifying `taste-1` as a premium model is what justifies charging premium-request rates for\ntaste operations. The model catalog in the same bundle lists ~80 real model ids\n(DeepSeek, Kimi, GLM, MiniMax, Qwen, GPT, Claude, Grok, Gemini) with `contextWindow`,\n`reasoningEfforts` and provider routing. `taste-1` is not among them.\n\nThe CLI states (`:64741`, `:64749`):\n\n\"Privacy: Taste processing runs on your codebase and stores learning data locally only.\"\n\n\"Taste processing runs on your codebase and stores learning data in your project and on your local machine only.\"\n\nStorage is local — `taste.md` is written under `.commandcode/taste/`. Processing is not.\nStep 3 above posts `compiledContext` to `https://api.commandcode.ai`, and that context embeds\n**verbatim source lines**. `buildSnippet2` (`:55612`) emits changed lines prefixed `→` with\nsurrounding context lines indented two spaces:\n\n```\nSnippet:\n  <context line>\n→ <your changed line>\n  <context line>\n```\n\nSending code to a model is what an inference call is, and is unremarkable in the main agent loop where the user knows it is happening. Taste is presented as local analysis. \"Runs on your codebase … on your local machine only\" reads as a claim that the code does not leave the machine, and it does.\n\nThe bundle ships a sensitive-filename denylist (`:68900`):\n\n```\n.env  .env.*  *.pem  *.key  id_rsa  id_rsa.*  id_ed25519  id_ed25519.*\nid_ecdsa  id_ecdsa.*  credentials  credentials.*  *.crt  .npmrc  .pypirc  .netrc\n```\n\n`hasSensitiveBasename` consumes it at six call sites — write-guarding (`:17640`), path-safety\nsets (`:17728`, `:17773`), IDE/telemetry file lists (`:74588`, `:74600`, `:74606`).\n\nThe taste extractor is not one of them. Its only filter is `isNoiseFile` (`:55556`, list at\n`:77172`):\n\n```\npackage-lock.json  pnpm-lock.yaml  yarn.lock  CHANGELOG.*  .versionbot/\n*.min.js  *.min.css  dist/  *.map\n```\n\nThat is a relevance filter, not a safety filter.\n\nBecause taste reads **history** rather than the working tree, a repo that ever committed a\n`.env`, `*.pem`, `id_rsa` or `credentials` file will have those hunks extracted verbatim and\nuploaded with everything else — deleting the secret from HEAD does not remove it from the\ncommit range taste mines.\n\nThe filter exists and is applied in six places. It is missing from the one path that ships historical file contents off the machine.\n\n- Opt out of telemetry with `DO_NOT_TRACK=1` or`\"telemetry\": false` in`~/.commandcode/config.json` .\n- The taste **feature** is genuinely useful. An automated first pass at a conventions file,\nderived from what you actually did rather than what you'd claim you do, beats a blank`CLAUDE.md` . None of the above is an argument against using it.\n- The objection is narrow: the mechanism is prompt engineering, and it is described as a neuro-symbolic model with reinforcement learning.\n- All of this is from a published npm package, read as shipped. Version-pinned to 1.58.0; later releases may differ.", "url": "https://wpnews.pro/news/what-taste-1-actually-is-reading-the-command-code-1-58-0-npm-bundle", "canonical_source": "https://gist.github.com/safzanpirani/5bd7a77ce304edb16f768982bb26bcc0", "published_at": "2026-09-19 10:16:03+00:00", "updated_at": "2026-09-19 19:24:28.449841+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "large-language-models", "ai-agents"], "entities": ["command-code", "Command Code CLI", "taste-1", "npm", "safzanpirani", "commandcode.ai"], "alternates": {"html": "https://wpnews.pro/news/what-taste-1-actually-is-reading-the-command-code-1-58-0-npm-bundle", "markdown": "https://wpnews.pro/news/what-taste-1-actually-is-reading-the-command-code-1-58-0-npm-bundle.md", "text": "https://wpnews.pro/news/what-taste-1-actually-is-reading-the-command-code-1-58-0-npm-bundle.txt", "jsonld": "https://wpnews.pro/news/what-taste-1-actually-is-reading-the-command-code-1-58-0-npm-bundle.jsonld"}}