{"record":{"id":"0772e97cf54fef1b","repo":"slimtoolkit/slim","slug":"missing-command","errorCode":null,"errorMessage":"missing command","messagePattern":"missing command","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/app/sensor/app.go","lineNumber":305,"sourceCode":"\nfunc dumpAppBom() {\n\tinfo := appbom.Get()\n\tif info == nil {\n\t\treturn\n\t}\n\n\tvar out bytes.Buffer\n\tencoder := json.NewEncoder(&out)\n\tencoder.SetEscapeHTML(false)\n\tencoder.SetIndent(\" \", \" \")\n\t_ = encoder.Encode(info)\n\tfmt.Printf(\"%s\\n\", out.String())\n}\n\n// sensor control <stop-target-app|wait-for-event|change-log-level|...>\nfunc runControlCommand(ctx context.Context) error {\n\tif len(os.Args) < 3 {\n\t\treturn errors.New(\"missing command\")\n\t}\n\n\tcmd := control.Command(os.Args[2])\n\n\tswitch cmd {\n\tcase control.StopTargetAppCommand:\n\t\tif err := control.ExecuteStopTargetAppCommand(ctx, *commandsFile); err != nil {\n\t\t\treturn fmt.Errorf(\"error stopping target app: %w\", err)\n\t\t}\n\n\tcase control.WaitForEventCommand:\n\t\tif len(os.Args) < 4 {\n\t\t\treturn errors.New(\"missing event name\")\n\t\t}\n\t\tif err := control.ExecuteWaitEvenCommand(ctx, eventsFilePath(), event.Type(os.Args[3])); err != nil {\n\t\t\treturn fmt.Errorf(\"error waiting for sensor event: %w\", err)\n\t\t}\n","sourceCodeStart":287,"sourceCodeEnd":323,"githubUrl":"https://github.com/slimtoolkit/slim/blob/81940d17fa112cc678e32209214bcb2355cb3004/pkg/app/sensor/app.go#L287-L323","documentation":"runControlCommand implements the `sensor control <command>` CLI. A control invocation must include a command name as os.Args[2]; if the process was invoked with fewer args, there is no command to dispatch and it returns this error.","triggerScenarios":"Running `sensor control` (or `sensor control` with only the mode arg) without a subcommand such as stop-target-app or wait-for-event.","commonSituations":"Hand-typing the control command and forgetting the subcommand; a script building the command line drops an argument; lifecycle hook configured with an empty command list.","solutions":["Pass the control subcommand: sensor control stop-target-app","Check the calling script/hook builds argv correctly (command at index 2)","Run `sensor control` help/docs to see valid subcommands"],"exampleFix":"// before\nsensor control\n// after\nsensor control stop-target-app","handlingStrategy":"validation","validationCode":"if len(os.Args) < 3 { return errors.New(\"usage: sensor control <command>\") }","typeGuard":null,"tryCatchPattern":"if err := runControlCommand(ctx); err != nil && strings.Contains(err.Error(), \"missing command\") {\n  fmt.Fprintln(os.Stderr, \"usage: sensor control <stop-target-app|wait-for-event|...>\")\n  os.Exit(2)\n}","preventionTips":["Quote full command lines in scripts so args aren't dropped","Check argv length before spawning the sensor control binary","Document subcommands in lifecycle hook configs"],"tags":["sensor","cli","arguments"],"backgroundTag":"missing-required-argument","analyzedSha":"81940d17fa112cc678e32209214bcb2355cb3004","analyzedAt":"2026-08-31T23:06:12.682Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T05:18:18.240Z"}