diff --git a/metropolis/cli/metroctl/cmd_node.go b/metropolis/cli/metroctl/cmd_node.go
index 19440b6..0476d99 100644
--- a/metropolis/cli/metroctl/cmd_node.go
+++ b/metropolis/cli/metroctl/cmd_node.go
@@ -117,7 +117,7 @@
 
 		nodes, err := core.GetNodes(ctx, mgmt, "")
 		if err != nil {
-			return fmt.Errorf("while calling Management.GetNodes: %v", err)
+			return fmt.Errorf("while calling Management.GetNodes: %w", err)
 		}
 		// Narrow down the output set to supplied node IDs, if any.
 		qids := make(map[string]bool)
@@ -239,7 +239,7 @@
 
 		nodes, err := core.GetNodes(ctx, mgmt, fmt.Sprintf("node.id==%q", args[0]))
 		if err != nil {
-			return fmt.Errorf("while calling Management.GetNodes: %v", err)
+			return fmt.Errorf("while calling Management.GetNodes: %w", err)
 		}
 
 		if len(nodes) == 0 {
diff --git a/metropolis/cli/metroctl/core/rpc.go b/metropolis/cli/metroctl/core/rpc.go
index b469544..a5aac60 100644
--- a/metropolis/cli/metroctl/core/rpc.go
+++ b/metropolis/cli/metroctl/core/rpc.go
@@ -25,7 +25,7 @@
 	if c.ProxyServer != "" {
 		socksDialer, err := proxy.SOCKS5("tcp", c.ProxyServer, nil, proxy.Direct)
 		if err != nil {
-			return nil, fmt.Errorf("failed to build a SOCKS dialer: %v", err)
+			return nil, fmt.Errorf("failed to build a SOCKS dialer: %w", err)
 		}
 		grpcd := func(_ context.Context, addr string) (net.Conn, error) {
 			return socksDialer.Dial("tcp", addr)
@@ -61,7 +61,7 @@
 	if proxyAddr != "" {
 		socksDialer, err := proxy.SOCKS5("tcp", proxyAddr, nil, proxy.Direct)
 		if err != nil {
-			return nil, fmt.Errorf("failed to build a SOCKS dialer: %v", err)
+			return nil, fmt.Errorf("failed to build a SOCKS dialer: %w", err)
 		}
 		grpcd := func(_ context.Context, addr string) (net.Conn, error) {
 			return socksDialer.Dial("tcp", addr)
diff --git a/metropolis/cli/metroctl/test/test.go b/metropolis/cli/metroctl/test/test.go
index 85bbaa2..7b31918 100644
--- a/metropolis/cli/metroctl/test/test.go
+++ b/metropolis/cli/metroctl/test/test.go
@@ -58,7 +58,7 @@
 	}
 	found, err := cmd.RunCommand(ctx, path, args, cmd.TerminateIfFound(expect, logf))
 	if err != nil {
-		return false, fmt.Errorf("while running metroctl: %v", err)
+		return false, fmt.Errorf("while running metroctl: %w", err)
 	}
 	return found, nil
 }
@@ -187,7 +187,7 @@
 			}
 			od, err := os.ReadFile("list.txt")
 			if err != nil {
-				return fmt.Errorf("while reading metroctl output file: %v", err)
+				return fmt.Errorf("while reading metroctl output file: %w", err)
 			}
 			if !strings.Contains(string(od), cl.NodeIDs[0]) {
 				return fmt.Errorf("expected node ID hasn't been found in metroctl output")
@@ -231,7 +231,7 @@
 			// Try matching metroctl output against the advertised format.
 			f, err := os.Open("describe.txt")
 			if err != nil {
-				return fmt.Errorf("while opening metroctl output: %v", err)
+				return fmt.Errorf("while opening metroctl output: %w", err)
 			}
 			scanner := bufio.NewScanner(f)
 			if !scanner.Scan() {
@@ -248,7 +248,7 @@
 
 			_, err = fmt.Sscanf(line, "%s%s%s%s%s%s%s%ds", &onid, &ostate, &onaddr, &onstatus, &onroles, &ontpm, &onver, &ontimeout)
 			if err != nil {
-				return fmt.Errorf("while parsing metroctl output: %v", err)
+				return fmt.Errorf("while parsing metroctl output: %w", err)
 			}
 			if onid != nid {
 				return fmt.Errorf("node id mismatch")
