diff --git a/cmd/matches/extprogram.go b/cmd/matches/extprogram.go
index cc85121..aa45dee 100644
--- a/cmd/matches/extprogram.go
+++ b/cmd/matches/extprogram.go
@@ -5,6 +5,7 @@ import (
 	"context"
 	"io"
 	"os/exec"
+	"strings"
 )
 
 // streamObtainer refers to functions that may return either an input stream or
@@ -72,7 +73,8 @@ func (pc *pipeCopy) abort() {
 // from both stderr and stdout to the dataPipe.
 func (pluginInst *matchesPlugin) readFromProgram(ctx context.Context, pipes *readerPipes) {
 	go func() {
-		cmd := exec.Command(pluginInst.dataSource) //nolint:gosec // Command is in fact user-provided
+		args := strings.Split(pluginInst.dataSource, " ")
+		cmd := exec.Command(args[0], args[1:]...) //nolint:gosec // Command is in fact user-provided
 
 		outs := startPipeCopy(func() (io.ReadCloser, error) { return cmd.StdoutPipe() }, pipes)
 		defer outs.close()