diff --git a/pkg/tiller/release_server.go b/pkg/tiller/release_server.go
index dcee44275daec87c07468ab7e20c03d43d1ebc9b..dd6b407b382d3db4f3d8b3104e07541415243e8f 100644
--- a/pkg/tiller/release_server.go
+++ b/pkg/tiller/release_server.go
@@ -604,7 +604,14 @@ func (s *ReleaseServer) InstallRelease(c ctx.Context, req *services.InstallRelea
 	rel, err := s.prepareRelease(req)
 	if err != nil {
 		log.Printf("Failed install prepare step: %s", err)
-		return nil, err
+		res := &services.InstallReleaseResponse{Release: rel}
+
+		// On dry run, append the manifest contents to a failed release. This is
+		// a stop-gap until we can revisit an error backchannel post-2.0.
+		if req.DryRun && strings.HasPrefix(err.Error(), "YAML parse error") {
+			err = fmt.Errorf("%s\n%s", err, rel.Manifest)
+		}
+		return res, err
 	}
 
 	res, err := s.performRelease(rel, req)
@@ -634,7 +641,24 @@ func (s *ReleaseServer) prepareRelease(req *services.InstallReleaseRequest) (*re
 
 	hooks, manifestDoc, notesTxt, err := s.renderResources(req.Chart, valuesToRender)
 	if err != nil {
-		return nil, err
+		// Return a release with partial data so that client can show debugging
+		// information.
+		rel := &release.Release{
+			Name:      name,
+			Namespace: req.Namespace,
+			Chart:     req.Chart,
+			Config:    req.Values,
+			Info: &release.Info{
+				FirstDeployed: ts,
+				LastDeployed:  ts,
+				Status:        &release.Status{Code: release.Status_UNKNOWN},
+			},
+			Version: 0,
+		}
+		if manifestDoc != nil {
+			rel.Manifest = manifestDoc.String()
+		}
+		return rel, err
 	}
 
 	// Store a release.
@@ -717,7 +741,18 @@ func (s *ReleaseServer) renderResources(ch *chart.Chart, values chartutil.Values
 	if err != nil {
 		// By catching parse errors here, we can prevent bogus releases from going
 		// to Kubernetes.
-		return nil, nil, "", err
+		//
+		// We return the files as a big blob of data to help the user debug parser
+		// errors.
+		b := bytes.NewBuffer(nil)
+		for name, content := range files {
+			if len(strings.TrimSpace(content)) == 0 {
+				continue
+			}
+			b.WriteString("\n---\n# Source: " + name + "\n")
+			b.WriteString(content)
+		}
+		return nil, b, "", err
 	}
 
 	// Aggregate all valid manifests into one big doc.