grafana/k6 · error

failed to encode/output version details: %w

Error message

failed to encode/output version details: %w

What it means

The JSON branch of the version command encodes the collected details directly to stdout with json.NewEncoder(c.gs.Stdout).Encode. The data is always JSON-encodable, so failure means the write to stdout failed — broken pipe, closed file descriptor, or terminal I/O error — wrapped as "failed to encode/output version details".

Source

Thrown at internal/cmd/version.go:233

	gs     *state.GlobalState
	isJSON bool
}

func (c *versionCmd) run(cmd *cobra.Command, _ []string) error {
	if !c.isJSON {
		root := cmd.Root()
		root.SetArgs([]string{"--version"})
		_ = root.Execute()
		return nil
	}

	details, err := versionDetailsWithExtensions(ext.GetAll())
	if err != nil {
		return fmt.Errorf("failed to get version details with extensions: %w", err)
	}

	if err := json.NewEncoder(c.gs.Stdout).Encode(details); err != nil {
		return fmt.Errorf("failed to encode/output version details: %w", err)
	}

	return nil
}

func getCmdVersion(gs *state.GlobalState) *cobra.Command {
	versionCmd := &versionCmd{gs: gs}

	cmd := &cobra.Command{
		Use:    "version",
		Short:  "Show application version",
		Long:   `Show the application version and exit.`,
		Hidden: true,
		RunE:   versionCmd.run,
	}

	cmd.Flags().BoolVar(&versionCmd.isJSON, "json", false, "if set, output version information will be in JSON format")

View on GitHub (pinned to 93accf6570)

Solutions

  1. Redirect to a file: k6 version --json > version.json
  2. Ensure the reader of the pipe consumes all output before exiting
  3. Run the command in a normal terminal to confirm the binary itself is fine

Example fix

# before
k6 version --json | jq .version   # reader may close the pipe early
# after
k6 version --json > version.json && jq .version version.json
Defensive patterns

Strategy: fallback

Try / catch

# Capture to a file so a closed pipe cannot truncate the write
k6 version --json > version.json 2>err.log || { echo 'stdout write failed:'; cat err.log; k6 version; }

Prevention

When it happens

Trigger: 'k6 version --json | head -1' where the reader exits before k6 finishes writing; stdout redirected to a closed descriptor; running in a sandbox or GUI context where stdout is not a valid writable stream.

Common situations: Piping version JSON to short-lived readers; scripting environments that revoke stdout; processes spawned without a valid standard output.

Related errors


AI-assisted analysis of grafana/k6@93accf6570 (2026-08-15). Data as JSON: /api/errors/a5c33b0a96124cf7. Report an issue: GitHub.