{"record":{"id":"0467ff4dd5a25325","repo":"Yeachan-Heo/oh-my-codex","slug":"unknown-tmux-hook-subcommand-subcommand","errorCode":null,"errorMessage":"Unknown tmux-hook subcommand: ${subcommand}","messagePattern":"Unknown tmux-hook subcommand: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"src/cli/tmux-hook.ts","lineNumber":89,"sourceCode":"    case 'init':\n      await initTmuxHookConfig();\n      return;\n    case 'status':\n      await showTmuxHookStatus();\n      return;\n    case 'validate':\n      await validateTmuxHookConfig();\n      return;\n    case 'test':\n      await testTmuxHook(args.slice(1));\n      return;\n    case 'help':\n    case '--help':\n    case '-h':\n      console.log(HELP);\n      return;\n    default:\n      throw new Error(`Unknown tmux-hook subcommand: ${subcommand}`);\n  }\n}\n\nfunction omxDir(cwd = process.cwd()): string {\n  return omxRoot(cwd);\n}\n\nfunction tmuxHookConfigPath(cwd = process.cwd()): string {\n  return join(omxDir(cwd), 'tmux-hook.json');\n}\n\nfunction tmuxHookStatePath(cwd = process.cwd()): string {\n  return join(omxDir(cwd), 'state', 'tmux-hook-state.json');\n}\n\nfunction tmuxHookLogPath(cwd = process.cwd()): string {\n  return join(omxDir(cwd), 'logs', `tmux-hook-${new Date().toISOString().split('T')[0]}.jsonl`);\n}","sourceCodeStart":71,"sourceCodeEnd":107,"githubUrl":"https://github.com/Yeachan-Heo/oh-my-codex/blob/3ad79a8a6fe6e95fdbb8c00e40716fffe4011ce2/src/cli/tmux-hook.ts#L71-L107","documentation":"The tmux-hook CLI dispatcher received a first argument that does not match any known subcommand (install, uninstall, help/--help/-h, etc.). It is a strict subcommand whitelist; any other token falls through to this throw.","triggerScenarios":"Running `omx tmux-hook <anything>` where the token is not one of the recognized subcommands, e.g. a typo like `omx tmux-hook instal` or an obsolete subcommand removed in a newer version.","commonSituations":"Typos, outdated docs or muscle memory from an older version whose subcommand set differed, or scripts written against a different CLI.","solutions":["Run omx tmux-hook help to list valid subcommands","Correct the typo (e.g. install, uninstall)","Check the README/changelog for renamed subcommands after upgrading"],"exampleFix":"# before\nomx tmux-hook instal\n# after\nomx tmux-hook install","handlingStrategy":"validation","validationCode":"const valid = new Set(['install','uninstall','help','--help','-h']);\nif (!valid.has(sub)) { console.error('unknown tmux-hook subcommand'); process.exit(1); }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Run omx tmux-hook help to enumerate subcommands","Pin the omx version in scripts so subcommand sets don't drift"],"tags":["cli","usage","tmux","dispatch"],"backgroundTag":"unknown-cli-subcommand","analyzedSha":"3ad79a8a6fe6e95fdbb8c00e40716fffe4011ce2","analyzedAt":"2026-08-27T22:18:39.783Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}