Keep rewrites
diff --git a/mapper/mapper.go b/mapper/mapper.go
index 9d32042..fa75bd6 100644
--- a/mapper/mapper.go
+++ b/mapper/mapper.go
@@ -115,6 +115,15 @@
 		return jsonData, nil
 	}
 
+	// Store rewrites if they exist
+	var oldRewrites any
+	if queryMap, ok := queryData.(map[string]any); ok {
+		if rewrites, exists := queryMap["rewrites"]; exists {
+			oldRewrites = rewrites
+			delete(queryMap, "rewrites")
+		}
+	}
+
 	// Convert input JSON to AST
 	jsonBytes, err := json.Marshal(queryData)
 	if err != nil {
@@ -192,6 +201,13 @@
 		return nil, fmt.Errorf("failed to parse result JSON: %w", err)
 	}
 
+	// Restore rewrites if they existed
+	if oldRewrites != nil {
+		if resultMap, ok := resultData.(map[string]any); ok {
+			resultMap["rewrites"] = oldRewrites
+		}
+	}
+
 	// If we had a query wrapper, put the transformed data back in it
 	if hasQueryWrapper {
 		if wrapper, ok := jsonData.(map[string]any); ok {