diff --git a/cmd/cue/cmd/testdata/script/cmd_errcode.txt b/cmd/cue/cmd/testdata/script/cmd_errcode.txt
index 633f94b..9f791b4 100644
--- a/cmd/cue/cmd/testdata/script/cmd_errcode.txt
+++ b/cmd/cue/cmd/testdata/script/cmd_errcode.txt
@@ -9,6 +9,8 @@
 -- task_tool.cue --
 package home
 
+import "tool/exec"
+
 command: errcode: {
 	task: bad: exec.Run & {
 		kind:   "exec"
diff --git a/cmd/cue/cmd/testdata/script/cmd_import.txt b/cmd/cue/cmd/testdata/script/cmd_import.txt
new file mode 100644
index 0000000..d401652
--- /dev/null
+++ b/cmd/cue/cmd/testdata/script/cmd_import.txt
@@ -0,0 +1,19 @@
+! cue cmd pkg
+cmp stderr expect-stderr
+
+-- expect-stderr --
+reference "cli" not found
+-- task_tool.cue --
+package home
+
+// missing imports
+
+command: pkg: {
+	task: {
+		t2: cli.Print & {
+			text: "Hello world!"
+		}
+	}
+}
+
+-- cue.mod --
diff --git a/cmd/cue/cmd/testdata/script/cmd_ref.txt b/cmd/cue/cmd/testdata/script/cmd_ref.txt
index 5141b3f..456f992 100644
--- a/cmd/cue/cmd/testdata/script/cmd_ref.txt
+++ b/cmd/cue/cmd/testdata/script/cmd_ref.txt
@@ -9,6 +9,7 @@
 
 import (
 	"tool/cli"
+	"tool/exec"
 )
 
 command: ref: {
diff --git a/cue/ast.go b/cue/ast.go
index c2bb876..bfbaae6 100644
--- a/cue/ast.go
+++ b/cue/ast.go
@@ -40,7 +40,7 @@
 	// TODO: insert by converting to value first so that the trim command can
 	// also remove top-level fields.
 	// First process single file.
-	v := newVisitor(inst.index, inst.inst, inst.rootStruct, inst.scope)
+	v := newVisitor(inst.index, inst.inst, inst.rootStruct, inst.scope, false)
 	v.astState.astMap[f] = inst.rootStruct
 	// TODO: fix cmd/import to resolve references in the AST before
 	// inserting. For now, we accept errors that did not make it up to the tree.
@@ -80,6 +80,7 @@
 
 	litParser   *litParser
 	resolveRoot *structLit
+	allowAuto   bool // allow builtin packages without import
 
 	// make unique per level to avoid reuse of structs being an issue.
 	astMap map[ast.Node]scope
@@ -102,12 +103,12 @@
 	s.astMap[n] = v
 }
 
-func newVisitor(idx *index, inst *build.Instance, obj, resolveRoot *structLit) *astVisitor {
+func newVisitor(idx *index, inst *build.Instance, obj, resolveRoot *structLit, allowAuto bool) *astVisitor {
 	ctx := idx.newContext()
-	return newVisitorCtx(ctx, inst, obj, resolveRoot)
+	return newVisitorCtx(ctx, inst, obj, resolveRoot, allowAuto)
 }
 
-func newVisitorCtx(ctx *context, inst *build.Instance, obj, resolveRoot *structLit) *astVisitor {
+func newVisitorCtx(ctx *context, inst *build.Instance, obj, resolveRoot *structLit, allowAuto bool) *astVisitor {
 	v := &astVisitor{
 		object: obj,
 	}
@@ -117,6 +118,7 @@
 		inst:        inst,
 		litParser:   &litParser{ctx: ctx},
 		resolveRoot: resolveRoot,
+		allowAuto:   allowAuto,
 		astMap:      map[ast.Node]scope{},
 	}
 	return v
@@ -153,7 +155,7 @@
 					&nodeRef{baseValue: newExpr(n), node: r, label: label}, label}
 			}
 		}
-		if v.inSelector > 0 {
+		if v.inSelector > 0 && v.allowAuto {
 			if p := getBuiltinShorthandPkg(ctx, name); p != nil {
 				return &nodeRef{newExpr(n), p, label}
 			}
diff --git a/cue/builtin.go b/cue/builtin.go
index 3613b96..2d5beca 100644
--- a/cue/builtin.go
+++ b/cue/builtin.go
@@ -106,7 +106,7 @@
 	if err != nil {
 		panic(err)
 	}
-	v := newVisitor(ctx.index, nil, nil, nil)
+	v := newVisitor(ctx.index, nil, nil, nil, false)
 	value := v.walk(expr)
 	return value.evalPartial(ctx)
 }
diff --git a/cue/go.go b/cue/go.go
index 93a8caf..d2a2225 100644
--- a/cue/go.go
+++ b/cue/go.go
@@ -71,7 +71,7 @@
 		field := ctx.labelStr(field)
 		return ctx.mkErr(baseValue{}, "invalid tag %q for field %q: %v", tag, field, err)
 	}
-	v := newVisitor(ctx.index, nil, nil, obj)
+	v := newVisitor(ctx.index, nil, nil, obj, true)
 	return v.walk(expr)
 }
 
@@ -159,7 +159,7 @@
 	if err != nil {
 		panic(err) // cannot happen
 	}
-	v := newVisitor(ctx.index, nil, nil, nil)
+	v := newVisitor(ctx.index, nil, nil, nil, false)
 	return v.walk(expr).evalPartial(ctx)
 }
 
@@ -206,7 +206,7 @@
 		return makeNullable(&top{src.base()}, false).(evaluated)
 
 	case ast.Expr:
-		x := newVisitorCtx(ctx, nil, nil, nil)
+		x := newVisitorCtx(ctx, nil, nil, nil, false)
 		return ctx.manifest(x.walk(v))
 
 	case *big.Int:
diff --git a/cue/instance.go b/cue/instance.go
index 60ceffb..6852a71 100644
--- a/cue/instance.go
+++ b/cue/instance.go
@@ -142,7 +142,7 @@
 		return idx.mkErr(obj, "instance is not a struct")
 	}
 
-	v := newVisitor(idx, nil, nil, obj)
+	v := newVisitor(idx, nil, nil, obj, true)
 	return eval(idx, v.walk(expr))
 }
 
@@ -155,7 +155,7 @@
 	if !ok {
 		return ctx.mkErr(obj, "instance is not a struct")
 	}
-	v := newVisitor(ctx.index, inst.inst, nil, obj)
+	v := newVisitor(ctx.index, inst.inst, nil, obj, true)
 	return v.walk(expr).evalPartial(ctx)
 }
 
diff --git a/cue/parser/interface.go b/cue/parser/interface.go
index 302eb38..de1cf1f 100644
--- a/cue/parser/interface.go
+++ b/cue/parser/interface.go
@@ -179,7 +179,7 @@
 	f.Filename = filename
 	astutil.Resolve(f, pp.errf)
 
-	return
+	return f, pp.errors
 }
 
 // ParseExpr is a convenience function for parsing an expression.
@@ -223,7 +223,7 @@
 	}
 	astutil.ResolveExpr(e, p.errf)
 
-	return e, nil
+	return e, p.errors
 }
 
 // parseExprString is a convenience function for obtaining the AST of an
