diff --git a/internal/gitfs/git.go b/internal/gitfs/git.go
index 41e3ef2..ff391f3 100644
--- a/internal/gitfs/git.go
+++ b/internal/gitfs/git.go
@@ -63,7 +63,7 @@
 	}
 	caps := make(map[string]string)
 	for _, line := range lines {
-		verb, args, _ := cut(line, "=")
+		verb, args, _ := strings.Cut(line, "=")
 		caps[verb] = args
 	}
 	if _, ok := caps["version 2"]; !ok {
@@ -147,7 +147,7 @@
 		return nil, fmt.Errorf("refs: parsing response: %v %d\n%s\n%s", err, len(data), hex.Dump(postbody), hex.Dump(data))
 	}
 	for _, line := range lines {
-		hash, rest, ok := cut(line, " ")
+		hash, rest, ok := strings.Cut(line, " ")
 		if !ok {
 			return nil, fmt.Errorf("refs: parsing response: invalid line: %q", line)
 		}
@@ -155,7 +155,7 @@
 		if err != nil {
 			return nil, fmt.Errorf("refs: parsing response: invalid line: %q", line)
 		}
-		name, _, _ := cut(rest, " ")
+		name, _, _ := strings.Cut(rest, " ")
 		refs = append(refs, ref{hash: h, name: name})
 	}
 	return refs, nil
diff --git a/internal/gitfs/pkt.go b/internal/gitfs/pkt.go
index d9be1d9..95b57b3 100644
--- a/internal/gitfs/pkt.go
+++ b/internal/gitfs/pkt.go
@@ -139,13 +139,3 @@
 func (w *pktLineWriter) Delim() {
 	w.b.WriteString("0001")
 }
-
-// cut looks for sep in s.
-// If sep is present, cut returns the text before and after sep, with ok = true.
-// If sep is missing, cut returns s, "", false.
-func cut(s, sep string) (before, after string, ok bool) {
-	if i := strings.Index(s, sep); i >= 0 {
-		return s[:i], s[i+len(sep):], true
-	}
-	return s, "", false
-}
diff --git a/internal/webtest/webtest.go b/internal/webtest/webtest.go
index 7c1e395..ef77276 100644
--- a/internal/webtest/webtest.go
+++ b/internal/webtest/webtest.go
@@ -161,7 +161,6 @@
 	"regexp"
 	"strings"
 	"testing"
-	"unicode/utf8"
 )
 
 // HandlerWithCheck returns an http.Handler that responds to each request
@@ -492,7 +491,7 @@
 	for text != "" {
 		lineno++
 		prevLine := line
-		line, text, _ = cut(text, "\n")
+		line, text, _ = strings.Cut(text, "\n")
 		if strings.HasPrefix(line, "#") {
 			continue
 		}
@@ -611,7 +610,7 @@
 				if kv == "" {
 					continue
 				}
-				k, v, ok := cut(kv, "=")
+				k, v, ok := strings.Cut(kv, "=")
 				if !ok {
 					lineno = cas.line // close enough
 					line = kv
@@ -650,24 +649,6 @@
 	return script, nil
 }
 
-// cut returns the result of cutting s around the first instance of sep.
-func cut(s, sep string) (before, after string, ok bool) {
-	if i := strings.Index(s, sep); i >= 0 {
-		return s[:i], s[i+len(sep):], true
-	}
-	return s, "", false
-}
-
-// cutAny returns the result of cutting s around the first instance of
-// any code point from any.
-func cutAny(s, any string) (before, after string, ok bool) {
-	if i := strings.IndexAny(s, any); i >= 0 {
-		_, size := utf8.DecodeRuneInString(s[i:])
-		return s[:i], s[i+size:], true
-	}
-	return s, "", false
-}
-
 // splitOneField splits text at the first space or tab
 // and returns that first field and the remaining text.
 func splitOneField(text string) (field, rest string) {
