{"componentChunkName":"component---src-templates-blog-post-js","path":"/claude-goal-usage/","result":{"data":{"site":{"siteMetadata":{"title":"Catwomaniya"}},"mdx":{"id":"3e491233-a11f-588a-98d6-7bead2a54cbb","excerpt":"Both shipped within days of each other.  Same command name, same general idea. Used both enough this week to have actual opinions. Short version: they're not…","body":"var _excluded = [\"components\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\n/* @jsx mdx */\n\nvar _frontmatter = {\n  \"title\": \"I used /goal in both Claude Code and Codex. Few honest thoughts.\",\n  \"date\": \"2026-05-27\",\n  \"description\": \"OpenAI and Anthropic shipped the same feature 11 days apart. Here's how they differ.\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"Both shipped within days of each other. \"), mdx(\"p\", null, \"Same command name, same general idea.\"), mdx(\"p\", null, \"Used both enough this week to have actual opinions. Short version: they\\u2019re not the same thing in how they work.\"), mdx(\"h2\", null, \"What even is /goal\"), mdx(\"p\", null, \"If you use Claude Code or Codex, you know the loop. Task starts, runs for a bit, stops. You type \\u201Ccontinue.\\u201D It runs again. You type \\u201Ccontinue\\u201D again. For anything non-trivial that\\u2019s 30 manual prompts to finish one thing.\\n/goal kills that loop.\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"590px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/a84742d4de6e9fb8de1db2e72651e264/a878e/goal3.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"56.08108108108109%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABbklEQVR42nWSi06DMBSG9/6vY+IjGJNlsnlZmJpt5VJKr5QBLZQOD2DM0PgFTv4W/p4LrPq+z/OcEMIYg5imKZ3AGMdxzDmfn0Lsum4YhusNq6u/Ho/H15G3IAh2ux2oWazX6/1+v91uYbnZbOAIrbW19ueIFdxSyjkzaCjEew/iNs643rVte7szmqGedkIqkeBY60JIjuITLKWSIHKalaVOs5gy0vduYQbmSlznjLGQu3e9aaxzYxXWtF03GkC0tlv2DLvW1nVtjVUXxnRMVZTxM5GIiDPmp1FIlLJjLiNWxEKTqTP/bVZKwTAhUpVENIzy8HAO4PqIdu9oG56ePqLn8BR8Ji8JD4lAi8zDxDg5JXGGq6rRukxxWlcNFfhxf//wdpcxVF0ahM4w2oXZ++8yqvpCWW5ba0xT6ALaaUyV0E9EDkUpGtPosqiqy++B/WAm4OMpqTgXQkhdlM654YZ/zXMXbomHP+nq/775BUPQb/3tKW0+AAAAAElFTkSuQmCC')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"Codex goal process and how its different now from regular prompting\",\n    \"title\": \"Codex goal process and how its different now from regular prompting\",\n    \"src\": \"/static/a84742d4de6e9fb8de1db2e72651e264/fcda8/goal3.png\",\n    \"srcSet\": [\"/static/a84742d4de6e9fb8de1db2e72651e264/12f09/goal3.png 148w\", \"/static/a84742d4de6e9fb8de1db2e72651e264/e4a3f/goal3.png 295w\", \"/static/a84742d4de6e9fb8de1db2e72651e264/fcda8/goal3.png 590w\", \"/static/a84742d4de6e9fb8de1db2e72651e264/efc66/goal3.png 885w\", \"/static/a84742d4de6e9fb8de1db2e72651e264/c83ae/goal3.png 1180w\", \"/static/a84742d4de6e9fb8de1db2e72651e264/a878e/goal3.png 2048w\"],\n    \"sizes\": \"(max-width: 590px) 100vw, 590px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"p\", null, \"You write one condition \\u2014 what done looks like \\u2014 and the tool keeps working across turns until that condition is met. You don\\u2019t sit there prompting. You don\\u2019t watch it. You walk away and come back to a finished result.\"), mdx(\"p\", null, \"OpenAI shipped it in Codex CLI in late April 2026. Anthropic followed in Claude Code shortly after. Same name, different approaches.\"), mdx(\"h2\", null, \"What each one does differently\"), mdx(\"p\", null, \"Codex attaches the goal to the current thread and tracks it while the task runs. Close your laptop, reopen it, /goal resume \\u2014 it\\u2019s still there. Persisted locally. More like pinning a long-term target and leaving it to run autonomously.\"), mdx(\"p\", null, \"Claude Code is more opinionated about it. After every turn, a small fast model \\u2014 Haiku by default \\u2014 reads the transcript and answers one question: is the goal met? If no, Claude starts the next turn automatically. If yes, it stops.\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"590px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/bc764ac15e7a7f1afccacc4294c62b3c/1e043/goal2.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"68.24324324324324%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAIAAACgpqunAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAB3UlEQVR42m1STW8TMRDdn4ZAXFFVVD7EBYlLVY6oVbsNByT+Qg+IHlr1XCS4thX8hyJKsk0h+xGvPfba3s1ud+0IGG9S0qSRnqyZZz/pzRt7NmNzUNwqWEJKWITinimkKdQNpNHCKL5IIoN8nhndwhXumVcnV3XYq8OgHrjTSGYlc60je0g2ya8xvhbE0IFlEcLQsOHEidnWKt99Bp3n/P0rtvFAffsszz6x1w/5u5fw9gX4T9mbR+ryojw7Gn7Y7u75CLrvV6cHZqSdmG2usO3H4D+h6/fk1y/i5Jhu3IedNb6zBlursLmigovi9EgfdOKPfrK/qw875cmhE9dxvx50pybDHtpGuBEGPdU9z4Pv8PP8WrAaErRdJVcQ/MCi4UOjhNcGIGdosykFFJBmJBEkGkFacVrz1Ga0TGPoX2JhMuZmNhLmgGJEW7dr45M9YWZ/bCNIqrn4a5sxpi3Bm76eAe4w3K1A8brQkqY5Z3Wup2KbS6uFnazXec5sfrsV01tnlY5V+z3Eje0q6peclkCukdKioWFJ4xJSDMmJOakmV3ftoHj0O1AkkUk4YkObZyjWSZjFUcmI+0YizUlU0OHMy20x2sYBxv+tosk8m2/FUmWb9mI2SwPjS8X/APzI8ojNHMFkAAAAAElFTkSuQmCC')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"claude goal process\",\n    \"title\": \"claude goal process\",\n    \"src\": \"/static/bc764ac15e7a7f1afccacc4294c62b3c/fcda8/goal2.png\",\n    \"srcSet\": [\"/static/bc764ac15e7a7f1afccacc4294c62b3c/12f09/goal2.png 148w\", \"/static/bc764ac15e7a7f1afccacc4294c62b3c/e4a3f/goal2.png 295w\", \"/static/bc764ac15e7a7f1afccacc4294c62b3c/fcda8/goal2.png 590w\", \"/static/bc764ac15e7a7f1afccacc4294c62b3c/1e043/goal2.png 690w\"],\n    \"sizes\": \"(max-width: 590px) 100vw, 590px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"p\", null, \"So:\\nCodex /goal \\u2014 attach a long-term target to the thread, experimental, hands-off.\\nClaude Code /goal \\u2014 set a verifiable stop condition, evaluated every turn, auto-continues until done.\"), mdx(\"h2\", null, \"What that actually feels like\"), mdx(\"p\", null, \"Codex wins on autonomy. Longer reliable runs, fewer interruptions, better at true background execution. If you want to walk away for two hours \\u2014 Codex is more ready for that right now.\"), mdx(\"p\", null, \"Claude Code is smarter about whether it\\u2019s done, but tends to need more steering. More check-ins, more moments where it wants input before continuing. The evaluator loop is genuinely good, it\\u2019s just more collaborative than fully autonomous.\"), mdx(\"p\", null, \"Neither is \\u201Cset it and forget it\\u201D in the way people imagine. But Codex gets closer.\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"590px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/3c7ce91279c1d1d95e119fa02ff238e5/1e043/goal1.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"68.24324324324324%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAIAAACgpqunAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC3klEQVR42j1SS08TURSeP+HWhL0bF0ZiwsaFLohh4cYokdRXRFFEXZio8R00xoVojICGh4omGiogoKhtLYhVFKGICAUrbaczc+fO3Lkzc2c6j7aeocbk5Oac7zvf/W7uOZxHZF/DriYXqVIytbJFofRU5MEJQeQgqOqvsSVGiwb5z3IACenlp73d6V/zyS+Jydh7cfV3iekOkV2QmdRMJfXEGJ9emZtKfB6PLcxMl0zqBn6Y8ymWF+fGB1/wya+pxIe52Bj+lfQR72g40FPVWvlhfouhhZnFj9H5+Lvc7BdPygYUiI2xZ2j/FnJmp3p+D720V7/UIDdtQ6fqCukFzy2w73GpcStqqVXP7aYX6vUrIaWlVjxYY81MeDbjzMlR+eJe5WYTvt6Irjfim8dw62Hl1olCNuXazP45ha/sw1cPQANqPSzfOIKvHcSXQ/bCV48ZXGF10Yz2s/ggjYblN8/Z+JAB5ac3DhbhzY6QMeND7OMImxzF78LGxDCbGDbjg46YcXWV08Mdue3rhF0bxEM10qEacf+WfF2VUL/RXpr1fI99es3XVYn7qsVQtRTaLDRsEhs28TvWs89jXsHm7FSSvuw0hnsgyECXNfqIDjyEj3DkvGuQQm5FD6hewMnLB+ZwN+T6qx7APZ1whZVZFumlkb7sUFe6v1Ma7WXRx2zihYNyrq45/LIV69Mjj/MjPb/DnfyrbiPyhEWfAO6C2Jp+S+8dVTtO59uO823HhLvNtKNF7zkb0JZpL32DUr3fAlT+znH+dpPafpK2N9upac/UOVdFjvjHFf/4KFOUM3A6QtpBGbcyZyI70qonrRbXWAjIAXErcwaxrxNHUxiWmIwsLPkG8TUluBTWCFiqWIpsYcRkaJAgBwTwQAyrWy6XTcYkURYFJInILxZLruMqYkVcLvqE0ArLZ/OKqgHiElRxDqxg9R2CC/BIguEbYWcB/+esKzDwgNLWGjTlv/Nf10y3N/e05G0AAAAASUVORK5CYII=')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"Codex vs claude\",\n    \"title\": \"Codex vs claude\",\n    \"src\": \"/static/3c7ce91279c1d1d95e119fa02ff238e5/fcda8/goal1.png\",\n    \"srcSet\": [\"/static/3c7ce91279c1d1d95e119fa02ff238e5/12f09/goal1.png 148w\", \"/static/3c7ce91279c1d1d95e119fa02ff238e5/e4a3f/goal1.png 295w\", \"/static/3c7ce91279c1d1d95e119fa02ff238e5/fcda8/goal1.png 590w\", \"/static/3c7ce91279c1d1d95e119fa02ff238e5/1e043/goal1.png 690w\"],\n    \"sizes\": \"(max-width: 590px) 100vw, 590px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"h2\", null, \"The important stuff - the condition is everything\"), mdx(\"p\", null, \"Vague goal = loop that never resolves = token bill that hurts.\"), mdx(\"p\", null, \"Bad: \\u201CClean up the codebase.\\u201D Nothing to evaluate. Runs forever.\"), mdx(\"p\", null, \"Good: \\u201CMigrate the payment module to the new API, tests pass, git diff only touches payment-related files. Stop after 20 turns if not done.\\u201D\"), mdx(\"p\", null, \"Three things every good condition needs \\u2014 \"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"a clear completed state\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"a way to verify it\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"and, what not to touch. \")), mdx(\"p\", null, \"The turn limit matters too. Without it, a goal that can\\u2019t resolve just burns tokens until you notice.\"), mdx(\"h2\", null, \"Use cases where it actually removes work\"), mdx(\"p\", null, \"The ones where it clicked for me:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Messy file backlog \\u2014 had 60+ images/PDFs sitting in a folder for months. Set a /goal: extract date, amount, category from each, build a clean expenses.csv, generate a spend summary by category and month. Came back to a finished CSV. Zero prompting.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Scraping and categorising \\u2014 give it a list of URLs or a folder of raw data (used it for a content analaysis of 200+ videos including scripts, description and engagement metrics) set a condition for what the clean output looks like. It works through the whole thing without you babysitting it.\")), mdx(\"p\", null, \"Not a good fit: requirement is still fuzzy, task needs judgment calls, touches risky files or \\u201Cdone\\u201D is subjective. If you can\\u2019t write what done looks like, don\\u2019t use /goal.\"), mdx(\"h2\", null, \"The actual shift happening here\"), mdx(\"p\", null, \"/goal is a small feature that points at something bigger. These tools are moving from interactive assistants to continuously executable work units.\\nBefore, you stayed nearby. It got stuck, you prompted. It finished a step, you told it to continue. /goal compresses that into a completion condition and lets the agent figure out the turns.\"), mdx(\"p\", null, \"The catch: writing a good /goal is harder than writing a prompt.\\nYou\\u2019re not just describing a task \\u2014 you\\u2019re defining what done means, how to prove it, and what to leave alone.\\nJob shifts from \\u201Ckeep telling it to continue\\u201D to \\u201Cdefine what done means.\\u201D\\nBigger ask. Better use of your time.\"));\n}\n;\nMDXContent.isMDXComponent = true;","frontmatter":{"title":"I used /goal in both Claude Code and Codex. Few honest thoughts.","date":"May 27, 2026","description":"OpenAI and Anthropic shipped the same feature 11 days apart. Here's how they differ."}}},"pageContext":{"slug":"/claude-goal-usage/","previous":{"fields":{"collection":"blog","slug":"/growing-x-account/"},"frontmatter":{"title":"The only Twitter workflow that doesn't make me want to quit"}},"next":{"fields":{"collection":"blog","slug":"/AI-made-me-productive-but-creativity-sucks/"},"frontmatter":{"title":"AI Made Me More Productive. So Why Does Creativity Feel Different?"}}}},"staticQueryHashes":["2841359383"]}