multica-ai/multica · error

--description-stdin and --context-stdin cannot be combined;

Error message

--description-stdin and --context-stdin cannot be combined; a single stdin cannot feed both fields — pass one of them inline

What it means

`multica workspace create` refuses --description-stdin together with --context-stdin because a process has a single stdin stream: whichever field reads it first drains it and the other would receive EOF and fail with a misleading 'content is empty' error. The combination is rejected up front with the fix spelled out.

Source

Thrown at server/cmd/multica/cmd_workspace.go:302

	if strings.TrimSpace(name) == "" {
		return nil, fmt.Errorf("--name is required")
	}

	// The server requires both name and slug (POST /api/workspaces returns 400
	// without them) and the slug is immutable after creation, so it must be
	// chosen explicitly here rather than silently omitted.
	slug, _ := cmd.Flags().GetString("slug")
	if strings.TrimSpace(slug) == "" {
		return nil, fmt.Errorf("--slug is required")
	}

	// A single stdin stream cannot feed two fields: whichever field reads first
	// drains it and the other gets EOF. Reject the ambiguous combination up
	// front instead of surfacing a misleading "content is empty" error.
	descStdin, _ := cmd.Flags().GetBool("description-stdin")
	ctxStdin, _ := cmd.Flags().GetBool("context-stdin")
	if descStdin && ctxStdin {
		return nil, fmt.Errorf("--description-stdin and --context-stdin cannot be combined; a single stdin cannot feed both fields — pass one of them inline")
	}

	body := map[string]any{"name": name, "slug": slug}
	if cmd.Flags().Changed("description") || cmd.Flags().Changed("description-stdin") {
		desc, _, err := resolveTextFlag(cmd, "description")
		if err != nil {
			return nil, err
		}
		body["description"] = desc
	}
	if cmd.Flags().Changed("context") || cmd.Flags().Changed("context-stdin") {
		ctxText, _, err := resolveTextFlag(cmd, "context")
		if err != nil {
			return nil, err
		}
		body["context"] = ctxText
	}
	if cmd.Flags().Changed("issue-prefix") {

View on GitHub (pinned to 2c0912b6ec)

Solutions

  1. Supply one field via stdin and the other inline: `--description-stdin --context "text"` (or vice versa).
  2. Or use --description-file / --context-file for both so stdin is untouched.
  3. Or run two commands: create with one field, then update with the other.

Example fix

# before
cat desc.txt | multica workspace create --name n --slug s --description-stdin --context-stdin

# after
multica workspace create --name n --slug s --description-file desc.txt --context-file ctx.txt
Defensive patterns

Strategy: validation

Validate before calling

if [ "$DESC_STDIN" = true ] && [ "$CTX_STDIN" = true ]; then echo 'one stdin cannot feed two fields'; exit 1; fi

Prevention

When it happens

Trigger: Running `cat payload | multica workspace create --name n --slug s --description-stdin --context-stdin`; only the first reader gets the bytes, the second sees EOF.

Common situations: Automation that wants to set both long-text fields from piped input in one command.

Related errors


AI-assisted analysis of multica-ai/multica@2c0912b6ec (2026-08-15). Data as JSON: /api/errors/b3952ec390ef1aca. Report an issue: GitHub.