diff --git a/content/documentation-assets/docs/zoo-design-studio/features/3d-design/parametric-modeling/surface-modeling/create-surfaces/extrude/edge-extrude-direction.webp b/content/documentation-assets/docs/zoo-design-studio/features/3d-design/parametric-modeling/surface-modeling/create-surfaces/extrude/edge-extrude-direction.webp
new file mode 100644
index 00000000..fd7ffa73
Binary files /dev/null and b/content/documentation-assets/docs/zoo-design-studio/features/3d-design/parametric-modeling/surface-modeling/create-surfaces/extrude/edge-extrude-direction.webp differ
diff --git a/content/documentation-assets/docs/zoo-design-studio/features/3d-design/parametric-modeling/surface-modeling/create-surfaces/extrude/edge-extrude.webp b/content/documentation-assets/docs/zoo-design-studio/features/3d-design/parametric-modeling/surface-modeling/create-surfaces/extrude/edge-extrude.webp
new file mode 100644
index 00000000..dc7950c7
Binary files /dev/null and b/content/documentation-assets/docs/zoo-design-studio/features/3d-design/parametric-modeling/surface-modeling/create-surfaces/extrude/edge-extrude.webp differ
diff --git a/content/documentation-assets/docs/zoo-design-studio/features/3d-design/parametric-modeling/surface-modeling/create-surfaces/extrude/select-body-edge.webp b/content/documentation-assets/docs/zoo-design-studio/features/3d-design/parametric-modeling/surface-modeling/create-surfaces/extrude/select-body-edge.webp
new file mode 100644
index 00000000..c9d21921
Binary files /dev/null and b/content/documentation-assets/docs/zoo-design-studio/features/3d-design/parametric-modeling/surface-modeling/create-surfaces/extrude/select-body-edge.webp differ
diff --git a/content/pages/docs/kcl-std/functions/std-sketch-extrude.md b/content/pages/docs/kcl-std/functions/std-sketch-extrude.md
index a5fd5f0c..a98022c8 100644
--- a/content/pages/docs/kcl-std/functions/std-sketch-extrude.md
+++ b/content/pages/docs/kcl-std/functions/std-sketch-extrude.md
@@ -43,7 +43,7 @@ can change this behavior by using the `method` parameter. See
| `length` | [`number(Length)`](/docs/kcl-std/types/std-types-number) | How far to extrude the given sketches. Incompatible with `to`. | No |
| `to` | [`Point3d`](/docs/kcl-std/types/std-types-Point3d) or [`Axis3d`](/docs/kcl-std/types/std-types-Axis3d) or [`Plane`](/docs/kcl-std/types/std-types-Plane) or [`Edge`](/docs/kcl-std/types/std-types-Edge) or [`Face`](/docs/kcl-std/types/std-types-Face) or [`Sketch`](/docs/kcl-std/types/std-types-Sketch) or [`Solid`](/docs/kcl-std/types/std-types-Solid) or [`TaggedEdge`](/docs/kcl-std/types/std-types-TaggedEdge) or [`TaggedFace`](/docs/kcl-std/types/std-types-TaggedFace) or [`any`](/docs/kcl-std/types/std-types-any) | Reference to extrude to. Incompatible with `length` and `twistAngle`. Experimental face API: edge specifier objects (`{ sideFaces = [faceTag1, faceTag2], endFaces? = [...], index? }`) are not ready for generated or user-facing KCL yet; prefer existing point, axis, plane, edge, face, sketch, solid, or tag forms until point-and-click and migration support ships. | No |
| `symmetric` | [`bool`](/docs/kcl-std/types/std-types-bool) | If true, the extrusion will happen symmetrically around the sketch. Otherwise, the extrusion will happen on only one side of the sketch. | No |
-| `direction` | [`Point3d`](/docs/kcl-std/types/std-types-Point3d) or [`Edge`](/docs/kcl-std/types/std-types-Edge) or [`TaggedEdge`](/docs/kcl-std/types/std-types-TaggedEdge) or [`Segment`](/docs/kcl-std/types/std-types-Segment) | **Experimental.** If specified, will extrude in this direction instead of the sketch plane normal. If an edge is being extruded, this defaults to halfway between the faces on either side of the edge. | No |
+| `direction` | [`Point3d`](/docs/kcl-std/types/std-types-Point3d) or [`Edge`](/docs/kcl-std/types/std-types-Edge) or [`TaggedEdge`](/docs/kcl-std/types/std-types-TaggedEdge) or [`Segment`](/docs/kcl-std/types/std-types-Segment) | If specified, will extrude in this direction instead of the sketch plane normal. If an edge is being extruded, this defaults to halfway between the faces on either side of the edge. | No |
| `bidirectionalLength` | [`number(Length)`](/docs/kcl-std/types/std-types-number) | If specified, will also extrude in the opposite direction to 'distance' to the specified distance. If 'symmetric' is true, this value is ignored. | No |
| `tagStart` | [`TagDecl`](/docs/kcl-std/types/std-types-TagDecl) | A named tag for the face at the start of the extrusion, i.e. the original sketch. | No |
| `tagEnd` | [`TagDecl`](/docs/kcl-std/types/std-types-TagDecl) | A named tag for the face at the end of the extrusion, i.e. the new face created by extruding the original sketch. | No |
@@ -646,7 +646,7 @@ extrude(
```kcl
-@settings(kclVersion = 2.0, experimentalFeatures = allow)
+@settings(kclVersion = 2.0)
// The direction parameter can apply to sketches, segments, or edges
// Directions can be specified by an axis, a sketch segment, or a body's edge.
@@ -766,5 +766,3 @@ extrude002 = extrude(
touch-action="pan-y"
>
-
-
diff --git a/content/pages/docs/zoo-design-studio/features/3d-design/parametric-modeling/solid-modeling/create-solids/extrude.mdx b/content/pages/docs/zoo-design-studio/features/3d-design/parametric-modeling/solid-modeling/create-solids/extrude.mdx
index 37262bbe..bd2549bf 100644
--- a/content/pages/docs/zoo-design-studio/features/3d-design/parametric-modeling/solid-modeling/create-solids/extrude.mdx
+++ b/content/pages/docs/zoo-design-studio/features/3d-design/parametric-modeling/solid-modeling/create-solids/extrude.mdx
@@ -82,6 +82,17 @@ When creating a non-symmetric bidirectional extrusion, this sets how far to extr
In this example, the extrude uses two different lengths: 5mm in one direction and 2mm in the other. This allows you to create features that extend unequally from the sketch, giving you more control and flexibility for asymmetric or custom shapes.
+## Direction
+
+By default, a sketch profile extrudes perpendicular to its sketch plane. Set `direction` when the
+extrusion should follow a different vector. In the command palette, select a sketch segment or an
+existing body edge to define that direction. In KCL, you can also pass a three-component vector, a
+tagged edge, or an edge returned by an edge query.
+
+The direction reference sets the extrusion's orientation; `length` still sets its distance. The
+same parameter is available when [extruding a surface or body
+edge](/docs/zoo-design-studio/features/3d-design/parametric-modeling/surface-modeling/create-surfaces/extrude).
+
## Start Tag and End Tag
Apply tags to the start face (your original sketch plane) or end face (the extruded cap) to reference them in later operations. This is mainly used for referencing faces from other objects or features, especially in code or scripts. In the usual point-and-click UI flow, you don't need to set these tags. This is mostly for advanced users who want precise control or automation.
@@ -197,6 +208,9 @@ be used with `length` or `twistAngle`.
`symmetric`: Splits the extrusion equally to both sides of the sketch plane.
+`direction`: Overrides the sketch plane normal. Accepts a 3D vector, sketch segment, body edge,
+tagged edge, or queried edge.
+
`bidirectionalLength`: Adds a second extrusion distance in the opposite direction. Ignored when
`symmetric` is enabled.
diff --git a/content/pages/docs/zoo-design-studio/features/3d-design/parametric-modeling/surface-modeling/create-surfaces/extrude.mdx b/content/pages/docs/zoo-design-studio/features/3d-design/parametric-modeling/surface-modeling/create-surfaces/extrude.mdx
index 0dbbb408..109b86ac 100644
--- a/content/pages/docs/zoo-design-studio/features/3d-design/parametric-modeling/surface-modeling/create-surfaces/extrude.mdx
+++ b/content/pages/docs/zoo-design-studio/features/3d-design/parametric-modeling/surface-modeling/create-surfaces/extrude.mdx
@@ -1,14 +1,15 @@
---
title: Extrude Surface
-excerpt: Create surface extrusions with the Extrude Surface tool in Zoo Design Studio.
+excerpt: Create surface extrusions from sketch profiles and body edges in Zoo Design Studio.
sidebarPosition: 0
---
Use the same Extrude tool used in
[Extrude Solid](/docs/zoo-design-studio/features/3d-design/parametric-modeling/solid-modeling/create-solids/extrude),
-then set `bodyType` to `surface` to create an open surface instead of a closed solid. This is useful
-for reference geometry, patch workflows, and downstream surface edits that should remain open rather
-than forming a volumetric body.
+then set `bodyType` to `surface` to create an open surface instead of a closed solid. You can extrude
+a sketch segment, sketch region, or an edge from an existing body. This is useful for reference
+geometry, patch workflows, and downstream surface edits that should remain open rather than forming
+a volumetric body.
direction = [1, 0, 1]
+