{"slug": "avoiding-being-a-meat-proxy-with-claude-code-mods", "title": "Avoiding being a Meat Proxy with Claude Code Mods", "summary": "Developer Jamie Tanna built a Claude Code Mod that intercepts the `/copy` command and automatically prepends the responding model's name to copied assistant output, so shared text carries attribution instead of being pasted as unattributed AI output. The Mod registers a handler on the `command.run` event for `copy`, accepts an optional argument N to select the Nth-latest non-empty assistant reply, and wraps the text in a markdown code block prefixed with \"Via `<model>`:\" before calling `$.ui.copy`. Tanna said the approach avoids introducing a new `/copy-with-model` skill and preserves existing muscle memory for `/copy`.", "body_md": "I'm very much **not** a fan of [people being meat proxies](https://dontbeameatproxy.com/) and pasting AI-generated output to each other, least of all me.\n\nIt's super frustrating to read it, and feels wasteful of my time, as well as anyone else in the conversation, who are having to unpack the verbose text for what is actually being communicated.\n\nThat rant aside, sometimes I want to copy some text from an LLM, or sometimes you *do* need to reply to someone based on what an LLM has given you - sometimes it's passive aggressive, but sometimes it's actually needed - although I'd still recommend some edits + rewords.\n\nAs someone who's very careful about [attributing my use of LLM-derived code](https://www.jvt.me/posts/2026/02/25/llm-attribute/), as well as [on this blog](https://www.jvt.me/ai/), I'm also very conscious of the source of the text I share in chat messages, so want to make sure I attribute the model that's come up with the words I'm parroting.\n\nThis results in me writing something like:\n\n```\nVia Claude Sonnet 5.5:\n``` markdown\n{... response from agent goes here ...}\nI've ended up repeating this one too many time recently that I decided to look at how I could automate this.\n\nI didn't really want to introduce a new `/copy-with-model` skill, and require that my muscle memory changing, as I wanted to be able to continue `/copy` ing if possible. I remember hearing about [Claude Code's Mods system](https://code.claude.com/docs/en/plugins/mods/overview) which was recently added, and wondered if this may help out here.\n\nIt turns out, yes, it's fairly straightforward to create a Mod to intercept the `/copy` and add extra info into it 👏🏼\n\n``` python\nimport type { Register } from \"claude-code\";\n\nexport const register: Register = (on) => {\n on(\"command.run\", { command: \"copy\" }, async ($, e) => {\n const arg = e.args.trim();\n const n = arg === \"\" ? 1 : Number(arg);\n if (!Number.isInteger(n) || n < 1) {\n return { text: `Usage: /copy [N] where N is 1 (latest), 2, 3, … Got: ${arg}` };\n }\n\n const messages = await $.session.messages();\n const replies = messages.filter((m) => m.role === \"assistant\" && m.text !== \"\");\n const reply = replies.at(-n);\n if (reply === undefined) {\n return { text: `No assistant response #${n} to copy.` };\n }\n\n const model = await $.session.model();\n const lines = [\n \"Via `\" + model + \"`:\",\n \"\",\n \"````` markdown\",\n reply.text,\n \"`````\",\n ];\n const text = lines.join(\"\\n\");\n\n const copied = await $.ui.copy({ text });\n\n return {\n text: copied.isCopied\n ? `Copied response #${n} with model info (\\`${model}\\`).`\n : `Copy failed: ${copied.reason}`,\n };\n });\n};\n```\n\nThis way, I now get that resulting output automagically inserted every time I do a `/copy`, which is much better!", "url": "https://wpnews.pro/news/avoiding-being-a-meat-proxy-with-claude-code-mods", "canonical_source": "https://www.jvt.me/posts/2026/11/03/honest-claude-meatproxy/?utm_medium=rss&utm_source=rss", "published_at": "2026-11-03 17:25:05+00:00", "updated_at": "2026-11-03 17:49:37.795082+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "ai-agents"], "entities": ["Claude Code", "Jamie Tanna", "Claude Sonnet 5.5"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/avoiding-being-a-meat-proxy-with-claude-code-mods", "markdown": "https://wpnews.pro/news/avoiding-being-a-meat-proxy-with-claude-code-mods.md", "text": "https://wpnews.pro/news/avoiding-being-a-meat-proxy-with-claude-code-mods.txt", "jsonld": "https://wpnews.pro/news/avoiding-being-a-meat-proxy-with-claude-code-mods.jsonld"}}