diff --git a/cmd/cue/cmd/testdata/script/export_yaml.txt b/cmd/cue/cmd/testdata/script/export_yaml.txt
index 1fe971d..5677c7b 100644
--- a/cmd/cue/cmd/testdata/script/export_yaml.txt
+++ b/cmd/cue/cmd/testdata/script/export_yaml.txt
@@ -2,6 +2,7 @@
 cmp stdout expect-stdout
 -- expect-stdout --
 message: Hello World!
+test: {}
 -- hello/data.cue --
 package hello
 
@@ -10,4 +11,11 @@
 package hello
 
 message: "Hello \(who)!" // who declared in data.cue
+
+test: {
+	_foo: string // technically in error, but test anyway.
+	if len(_foo) > 0 {
+		command: ["foo", "bar"]
+	}
+}
 -- hello/cue.mod --
diff --git a/cue/builtins.go b/cue/builtins.go
index d350402..ffb39e6 100644
--- a/cue/builtins.go
+++ b/cue/builtins.go
@@ -643,7 +643,7 @@
 							}
 							return "", internal.ErrIncomplete
 						}
-						n := v.Syntax(Final())
+						n := v.Syntax(Final(), Concrete(true))
 						b, err := cueyaml.Encode(n)
 						return string(b), err
 					}()
@@ -674,7 +674,7 @@
 								}
 								return "", internal.ErrIncomplete
 							}
-							n := v.Syntax(Final())
+							n := v.Syntax(Final(), Concrete(true))
 							b, err := cueyaml.Encode(n)
 							if err != nil {
 								return "", err
diff --git a/cue/export.go b/cue/export.go
index 9ea215b..3279d2a 100644
--- a/cue/export.go
+++ b/cue/export.go
@@ -901,42 +901,44 @@
 		obj.Elts = append(obj.Elts, f)
 	}
 
-	for _, v := range x.comprehensions {
-		switch c := v.comp.(type) {
-		case *fieldComprehension:
-			l := p.expr(c.key)
-			label, _ := l.(ast.Label)
-			opt := token.NoPos
-			if c.opt {
-				opt = token.NoSpace.Pos() // anything but token.NoPos
-			}
-			tok := token.COLON
-			if c.def {
-				tok = token.ISA
-			}
-			f := &ast.Field{
-				Label:    label,
-				Optional: opt,
-				Token:    tok,
-				Value:    p.expr(c.val),
-			}
-			obj.Elts = append(obj.Elts, f)
-
-		case *structComprehension:
-			var clauses []ast.Clause
-			next := c.clauses
-			for {
-				if yield, ok := next.(*yield); ok {
-					obj.Elts = append(obj.Elts, &ast.Comprehension{
-						Clauses: clauses,
-						Value:   p.expr(yield.value),
-					})
-					break
+	if !p.mode.concrete {
+		for _, v := range x.comprehensions {
+			switch c := v.comp.(type) {
+			case *fieldComprehension:
+				l := p.expr(c.key)
+				label, _ := l.(ast.Label)
+				opt := token.NoPos
+				if c.opt {
+					opt = token.NoSpace.Pos() // anything but token.NoPos
 				}
+				tok := token.COLON
+				if c.def {
+					tok = token.ISA
+				}
+				f := &ast.Field{
+					Label:    label,
+					Optional: opt,
+					Token:    tok,
+					Value:    p.expr(c.val),
+				}
+				obj.Elts = append(obj.Elts, f)
 
-				var y ast.Clause
-				y, next = p.clause(next)
-				clauses = append(clauses, y)
+			case *structComprehension:
+				var clauses []ast.Clause
+				next := c.clauses
+				for {
+					if yield, ok := next.(*yield); ok {
+						obj.Elts = append(obj.Elts, &ast.Comprehension{
+							Clauses: clauses,
+							Value:   p.expr(yield.value),
+						})
+						break
+					}
+
+					var y ast.Clause
+					y, next = p.clause(next)
+					clauses = append(clauses, y)
+				}
 			}
 		}
 	}
diff --git a/cue/export_test.go b/cue/export_test.go
index e1d5eca..af303e0 100644
--- a/cue/export_test.go
+++ b/cue/export_test.go
@@ -1064,6 +1064,31 @@
 			a:  int
 			b?: string
 		}`),
+	}, {
+		// Drop comprehensions in final mode.
+		eval: true,
+		opts: []Option{Final(), Concrete(true)},
+		in: `
+		foo: _
+		a: {
+			if len(foo.bar) > 0 {
+				command: ["envoy-lifecycle", string]
+			}
+		}
+		`,
+		out: unindent(`
+		{
+			foo: _
+			a: {}
+		}`),
+	}, {
+		// Don't output hidden fields in concrete and final mode.
+		eval: true,
+		opts: []Option{Final(), Concrete(true)},
+		in: `
+			_foo: _
+			`,
+		out: `{}`,
 	}}
 	for _, tc := range testCases {
 		t.Run("", func(t *testing.T) {
diff --git a/pkg/encoding/yaml/manual.go b/pkg/encoding/yaml/manual.go
index 4697982..e35a060 100644
--- a/pkg/encoding/yaml/manual.go
+++ b/pkg/encoding/yaml/manual.go
@@ -33,7 +33,7 @@
 		}
 		return "", internal.ErrIncomplete
 	}
-	n := v.Syntax(cue.Final())
+	n := v.Syntax(cue.Final(), cue.Concrete(true))
 	b, err := cueyaml.Encode(n)
 	return string(b), err
 }
@@ -57,7 +57,7 @@
 			}
 			return "", internal.ErrIncomplete
 		}
-		n := v.Syntax(cue.Final())
+		n := v.Syntax(cue.Final(), cue.Concrete(true))
 		b, err := cueyaml.Encode(n)
 		if err != nil {
 			return "", err
