diff --git src/wp-includes/rest-api/class-wp-rest-request.php src/wp-includes/rest-api/class-wp-rest-request.php
index 3c465ba..dff6e0d 100644
--- src/wp-includes/rest-api/class-wp-rest-request.php
+++ src/wp-includes/rest-api/class-wp-rest-request.php
@@ -821,7 +821,9 @@ class WP_REST_Request implements ArrayAccess {
 				// if no sanitize_callback was specified, default to rest_parse_request_arg
 				// if a type was specified in the args.
 				if ( ! isset( $attributes['args'][ $key ]['sanitize_callback'] ) && ! empty( $attributes['args'][ $key ]['type'] ) ) {
-					$attributes['args'][ $key ]['sanitize_callback'] = 'rest_parse_request_arg';
+					if( ! array_key_exists('sanitize_callback', $attributes['args'][ $key ] ) ) {
+						$attributes['args'][ $key ]['sanitize_callback'] = 'rest_parse_request_arg';
+					}
 				}
 				// Check if this param has a sanitize_callback added.
 				if ( ! isset( $attributes['args'][ $key ] ) || empty( $attributes['args'][ $key ]['sanitize_callback'] ) ) {
