diff --git a/cloud/apigw/server/server.go b/cloud/apigw/server/server.go
index 98f3b92..902b4e0 100644
--- a/cloud/apigw/server/server.go
+++ b/cloud/apigw/server/server.go
@@ -2,6 +2,7 @@
 
 import (
 	"context"
+	"errors"
 	"flag"
 	"net"
 	"net/http"
@@ -37,9 +38,9 @@
 }
 
 // Server runs the apigw server. It listens on two interfaces:
-//  - Internal gRPC, which is authenticated using TLS and authorized by CA. This
-//    is to be used for internal RPCs, eg. management/debug.
-//  - Public gRPC-Web, which is currently unauthenticated.
+//   - Internal gRPC, which is authenticated using TLS and authorized by CA. This
+//     is to be used for internal RPCs, eg. management/debug.
+//   - Public gRPC-Web, which is currently unauthenticated.
 type Server struct {
 	Config Config
 
@@ -66,7 +67,7 @@
 	klog.Infof("Internal gRPC listening on %s", s.ListenGRPC)
 	go func() {
 		err := g.Serve(lis)
-		if err != ctx.Err() {
+		if !errors.Is(err, ctx.Err()) {
 			klog.Exitf("Internal gRPC serve failed: %v", err)
 		}
 	}()
@@ -91,7 +92,7 @@
 	klog.Infof("Public API listening on %s", s.ListenPublic)
 	go func() {
 		err := server.Serve(lis)
-		if err != ctx.Err() {
+		if !errors.Is(err, ctx.Err()) {
 			klog.Exitf("Public API serve failed: %v", err)
 		}
 	}()
diff --git a/cloud/bmaas/scruffy/server.go b/cloud/bmaas/scruffy/server.go
index 58e0f51..01d22bf 100644
--- a/cloud/bmaas/scruffy/server.go
+++ b/cloud/bmaas/scruffy/server.go
@@ -9,6 +9,7 @@
 
 import (
 	"context"
+	"errors"
 	"flag"
 	"fmt"
 	"os"
@@ -77,7 +78,7 @@
 	go hwr.run(ctx)
 
 	go func() {
-		if err := s.Config.Webug.Start(ctx, conn); err != nil && err != ctx.Err() {
+		if err := s.Config.Webug.Start(ctx, conn); err != nil && !errors.Is(err, ctx.Err()) {
 			klog.Exitf("Failed to start webug: %v", err)
 		}
 	}()
diff --git a/cloud/bmaas/server/server.go b/cloud/bmaas/server/server.go
index 00972de..0d188c2 100644
--- a/cloud/bmaas/server/server.go
+++ b/cloud/bmaas/server/server.go
@@ -2,6 +2,7 @@
 
 import (
 	"context"
+	"errors"
 	"flag"
 	"fmt"
 	"net"
@@ -119,7 +120,7 @@
 	klog.Infof("Public API listening on %s", s.ListenPublic)
 	go func() {
 		err := g.Serve(lis)
-		if err != ctx.Err() {
+		if !errors.Is(err, ctx.Err()) {
 			klog.Exitf("Public gRPC serve failed: %v", err)
 		}
 	}()
@@ -137,7 +138,7 @@
 	klog.Infof("Internal gRPC listening on %s", s.ListenGRPC)
 	go func() {
 		err := g.Serve(lis)
-		if err != ctx.Err() {
+		if !errors.Is(err, ctx.Err()) {
 			klog.Exitf("Internal gRPC serve failed: %v", err)
 		}
 	}()
@@ -163,7 +164,7 @@
 	s.startInternalGRPC(ctx)
 	s.startPublic(ctx)
 	go func() {
-		if err := s.Config.Webug.Start(ctx, conn); err != nil && err != ctx.Err() {
+		if err := s.Config.Webug.Start(ctx, conn); err != nil && !errors.Is(err, ctx.Err()) {
 			klog.Exitf("Failed to start webug: %v", err)
 		}
 	}()
diff --git a/cloud/shepherd/mini/main.go b/cloud/shepherd/mini/main.go
index 67231c0..b35c09e 100644
--- a/cloud/shepherd/mini/main.go
+++ b/cloud/shepherd/mini/main.go
@@ -3,6 +3,7 @@
 import (
 	"context"
 	"encoding/json"
+	"errors"
 	"flag"
 	"fmt"
 	"io"
@@ -182,7 +183,7 @@
 		}
 	}()
 	go func() {
-		if err := c.WebugConfig.Start(ctx, conn); err != nil && err != ctx.Err() {
+		if err := c.WebugConfig.Start(ctx, conn); err != nil && !errors.Is(err, ctx.Err()) {
 			klog.Exitf("Failed to start webug: %v", err)
 		}
 	}()
diff --git a/cloud/shepherd/provider/equinix/main.go b/cloud/shepherd/provider/equinix/main.go
index 0060502..7faee9d 100644
--- a/cloud/shepherd/provider/equinix/main.go
+++ b/cloud/shepherd/provider/equinix/main.go
@@ -2,6 +2,7 @@
 
 import (
 	"context"
+	"errors"
 	"flag"
 	"fmt"
 	"os"
@@ -146,7 +147,7 @@
 		}
 	}()
 	go func() {
-		if err := c.WebugConfig.Start(ctx, conn); err != nil && err != ctx.Err() {
+		if err := c.WebugConfig.Start(ctx, conn); err != nil && !errors.Is(err, ctx.Err()) {
 			klog.Exitf("Failed to start webug: %v", err)
 		}
 	}()
diff --git a/cloud/shepherd/provider/equinix/provider.go b/cloud/shepherd/provider/equinix/provider.go
index 22cf8fa..ebd9699 100644
--- a/cloud/shepherd/provider/equinix/provider.go
+++ b/cloud/shepherd/provider/equinix/provider.go
@@ -2,6 +2,7 @@
 
 import (
 	"context"
+	"errors"
 	"fmt"
 	"net/netip"
 	"slices"
@@ -342,13 +343,13 @@
 // generated as needed The key is generated as needed
 func (ep *equinixProvider) SSHEquinixEnsure(ctx context.Context) error {
 	k, err := ep.sshEquinix(ctx)
-	switch err {
-	case NoSuchKey:
+	switch {
+	case errors.Is(err, NoSuchKey):
 		if err := ep.sshEquinixUpload(ctx); err != nil {
 			return fmt.Errorf("while uploading key: %w", err)
 		}
 		return nil
-	case nil:
+	case err == nil:
 		if err := ep.sshEquinixUpdate(ctx, k.ID); err != nil {
 			return fmt.Errorf("while updating key: %w", err)
 		}
