diff --git a/pkg/kube/client.go b/pkg/kube/client.go
index 798434da445d98800cb083951964b787bc43e3b9..f117d7ee9ef12e335538977519dec40a27902d4c 100644
--- a/pkg/kube/client.go
+++ b/pkg/kube/client.go
@@ -53,6 +53,11 @@ import (
 	"k8s.io/kubernetes/pkg/printers"
 )
 
+const (
+	// MissingGetHeader is added to Get's outout when a resource is not found.
+	MissingGetHeader = "==> MISSING\nKIND\t\tNAME\n"
+)
+
 // ErrNoObjectsVisited indicates that during a visit operation, no matching objects were found.
 var ErrNoObjectsVisited = goerrors.New("no objects visited")
 
@@ -217,7 +222,7 @@ func (c *Client) Get(namespace string, reader io.Reader) (string, error) {
 		}
 	}
 	if len(missing) > 0 {
-		buf.WriteString("==> MISSING\nKIND\t\tNAME\n")
+		buf.WriteString(MissingGetHeader)
 		for _, s := range missing {
 			fmt.Fprintln(buf, s)
 		}
diff --git a/pkg/tiller/release_modules.go b/pkg/tiller/release_modules.go
index b5fbbeb445327c519782cf52f3cf0a22424f13b1..876e1ba37a8bf6410c63057e982d788e920edcad 100644
--- a/pkg/tiller/release_modules.go
+++ b/pkg/tiller/release_modules.go
@@ -161,7 +161,7 @@ func DeleteRelease(rel *release.Release, vs chartutil.VersionSet, kubeClient env
 
 	filesToKeep, filesToDelete := filterManifestsToKeep(files)
 	if len(filesToKeep) > 0 {
-		kept = summarizeKeptManifests(filesToKeep)
+		kept = summarizeKeptManifests(filesToKeep, kubeClient, rel.Namespace)
 	}
 
 	errs = []error{}
diff --git a/pkg/tiller/resource_policy.go b/pkg/tiller/resource_policy.go
index 2102ab66ba39efe8a5c0f9d974aa64ed667a61a7..66da1283ff244566bba77242b6b71f481b9f6b10 100644
--- a/pkg/tiller/resource_policy.go
+++ b/pkg/tiller/resource_policy.go
@@ -17,7 +17,11 @@ limitations under the License.
 package tiller
 
 import (
+	"bytes"
 	"strings"
+
+	"k8s.io/helm/pkg/kube"
+	"k8s.io/helm/pkg/tiller/environment"
 )
 
 // resourcePolicyAnno is the annotation name for a resource policy
@@ -34,7 +38,6 @@ func filterManifestsToKeep(manifests []Manifest) ([]Manifest, []Manifest) {
 	keep := []Manifest{}
 
 	for _, m := range manifests {
-
 		if m.Head.Metadata == nil || m.Head.Metadata.Annotations == nil || len(m.Head.Metadata.Annotations) == 0 {
 			remaining = append(remaining, m)
 			continue
@@ -55,10 +58,19 @@ func filterManifestsToKeep(manifests []Manifest) ([]Manifest, []Manifest) {
 	return keep, remaining
 }
 
-func summarizeKeptManifests(manifests []Manifest) string {
-	message := "These resources were kept due to the resource policy:\n"
+func summarizeKeptManifests(manifests []Manifest, kubeClient environment.KubeClient, namespace string) string {
+	var message string
 	for _, m := range manifests {
+		// check if m is in fact present from k8s client's POV.
+		output, err := kubeClient.Get(namespace, bytes.NewBufferString(m.Content))
+		if err != nil || strings.Contains(output, kube.MissingGetHeader) {
+			continue
+		}
+
 		details := "[" + m.Head.Kind + "] " + m.Head.Metadata.Name + "\n"
+		if message == "" {
+			message = "These resources were kept due to the resource policy:\n"
+		}
 		message = message + details
 	}
 	return message