diff --git a/api/services/content/content.pb.go b/api/services/content/content.pb.go
index f095f04..0dd41e4 100644
--- a/api/services/content/content.pb.go
+++ b/api/services/content/content.pb.go
@@ -201,8 +201,8 @@ type WriteRequest struct {
 	// file. This uses standard, zero-indexed semantics.
 	//
 	// If the action is write, the remote may remove all previously written
-	// data up to the offset. Implementations may support arbitrary offsets but
-	// MUST support reseting this value to zero with with a write. If an
+	// data after the offset. Implementations may support arbitrary offsets but
+	// MUST support reseting this value to zero with a write. If an
 	// implementation does not support a write at a particular offset, an
 	// OutOfRange error must be returned.
 	Offset int64 `protobuf:"varint,5,opt,name=offset,proto3" json:"offset,omitempty"`
diff --git a/api/services/execution/execution.pb.go b/api/services/execution/execution.pb.go
index 559775b..5f24909 100644
--- a/api/services/execution/execution.pb.go
+++ b/api/services/execution/execution.pb.go
@@ -155,7 +155,7 @@ const _ = grpc.SupportPackageIsVersion4
 type ContainerServiceClient interface {
 	Create(ctx context.Context, in *CreateRequest, opts ...grpc.CallOption) (*CreateResponse, error)
 	Start(ctx context.Context, in *StartRequest, opts ...grpc.CallOption) (*google_protobuf.Empty, error)
-	Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*google_protobuf.Empty, error)
+	Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteResponse, error)
 	Info(ctx context.Context, in *InfoRequest, opts ...grpc.CallOption) (*containerd_v1_types1.Container, error)
 	List(ctx context.Context, in *ListRequest, opts ...grpc.CallOption) (*ListResponse, error)
 	Events(ctx context.Context, in *EventsRequest, opts ...grpc.CallOption) (ContainerService_EventsClient, error)
@@ -187,8 +187,8 @@ func (c *containerServiceClient) Start(ctx context.Context, in *StartRequest, op
 	return out, nil
 }
 
-func (c *containerServiceClient) Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*google_protobuf.Empty, error) {
-	out := new(google_protobuf.Empty)
+func (c *containerServiceClient) Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteResponse, error) {
+	out := new(DeleteResponse)
 	err := grpc.Invoke(ctx, "/containerd.v1.services.ContainerService/Delete", in, out, c.cc, opts...)
 	if err != nil {
 		return nil, err
@@ -251,7 +251,7 @@ func (x *containerServiceEventsClient) Recv() (*containerd_v1_types1.Event, erro
 type ContainerServiceServer interface {
 	Create(context.Context, *CreateRequest) (*CreateResponse, error)
 	Start(context.Context, *StartRequest) (*google_protobuf.Empty, error)
-	Delete(context.Context, *DeleteRequest) (*google_protobuf.Empty, error)
+	Delete(context.Context, *DeleteRequest) (*DeleteResponse, error)
 	Info(context.Context, *InfoRequest) (*containerd_v1_types1.Container, error)
 	List(context.Context, *ListRequest) (*ListResponse, error)
 	Events(*EventsRequest, ContainerService_EventsServer) error
@@ -1950,42 +1950,42 @@ func init() {
 }
 
 var fileDescriptorExecution = []byte{
-	// 589 bytes of a gzipped FileDescriptorProto
+	// 590 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0x4d, 0x6f, 0xd3, 0x40,
 	0x10, 0xad, 0x93, 0xd4, 0x2d, 0x93, 0xa6, 0x54, 0xab, 0x2a, 0x32, 0x46, 0x72, 0x23, 0xd3, 0x96,
-	0x9c, 0x6c, 0x08, 0x17, 0xc4, 0x01, 0x41, 0xd3, 0x08, 0x45, 0x50, 0x24, 0x9c, 0x03, 0x47, 0xe4,
-	0xd8, 0x9b, 0xb0, 0x22, 0xd9, 0x35, 0xbb, 0xeb, 0xa8, 0xb9, 0xc1, 0xbf, 0xeb, 0x91, 0x23, 0x27,
-	0x44, 0x73, 0xe4, 0x57, 0x20, 0xaf, 0xed, 0x7c, 0x40, 0x8c, 0xb9, 0x58, 0x33, 0xcf, 0x6f, 0x76,
-	0x67, 0xde, 0xdb, 0x81, 0xee, 0x98, 0xc8, 0x8f, 0xf1, 0xd0, 0x09, 0xd8, 0xd4, 0x0d, 0x59, 0xf0,
-	0x09, 0x73, 0x37, 0x60, 0x54, 0xfa, 0x84, 0x62, 0x1e, 0xba, 0x7e, 0x44, 0x5c, 0x81, 0xf9, 0x8c,
-	0x04, 0x58, 0xb8, 0xf8, 0x1a, 0x07, 0xb1, 0x24, 0x8c, 0xae, 0x22, 0x27, 0xe2, 0x4c, 0x32, 0xd4,
-	0x5c, 0x95, 0x38, 0xb3, 0xc7, 0x4e, 0x5e, 0x61, 0xde, 0x1f, 0x33, 0x36, 0x9e, 0x60, 0x57, 0xb1,
-	0x86, 0xf1, 0xc8, 0xc5, 0xd3, 0x48, 0xce, 0xd3, 0x22, 0xf3, 0xde, 0x9f, 0x3f, 0x7d, 0x9a, 0xff,
-	0x3a, 0x1e, 0xb3, 0x31, 0x53, 0xa1, 0x9b, 0x44, 0x19, 0xfa, 0xb4, 0xb4, 0x55, 0x39, 0x8f, 0xb0,
-	0x70, 0xa7, 0x2c, 0xa6, 0x32, 0xfd, 0x66, 0x95, 0x2f, 0xfe, 0xb3, 0x72, 0x09, 0xae, 0xa2, 0xf4,
-	0x04, 0xfb, 0x6b, 0x05, 0x1a, 0x5d, 0x8e, 0x7d, 0x89, 0x3d, 0xfc, 0x39, 0xc6, 0x42, 0xa2, 0x26,
-	0x54, 0x48, 0x68, 0x68, 0x2d, 0xad, 0x7d, 0xe7, 0x42, 0x5f, 0xfc, 0x38, 0xa9, 0xf4, 0x2f, 0xbd,
-	0x0a, 0x09, 0x51, 0x1b, 0x6a, 0x22, 0xc2, 0x81, 0x51, 0x69, 0x69, 0xed, 0x7a, 0xe7, 0xd8, 0x49,
-	0xa7, 0x74, 0xf2, 0x29, 0x9d, 0x97, 0x74, 0xee, 0x29, 0x06, 0xea, 0x80, 0xce, 0x19, 0x93, 0x23,
-	0x61, 0x54, 0x5b, 0xd5, 0x76, 0xbd, 0x63, 0x3a, 0x9b, 0x32, 0xaa, 0x9e, 0x9c, 0xab, 0x64, 0x0e,
-	0x2f, 0x63, 0x22, 0x03, 0xf6, 0x78, 0x4c, 0x25, 0x99, 0x62, 0xa3, 0x96, 0x5c, 0xed, 0xe5, 0x29,
-	0x3a, 0x86, 0x5d, 0x21, 0x43, 0x42, 0x8d, 0x5d, 0x85, 0xa7, 0x09, 0x6a, 0x82, 0x2e, 0x64, 0xc8,
-	0x62, 0x69, 0xe8, 0x0a, 0xce, 0xb2, 0x0c, 0xc7, 0x9c, 0x1b, 0x7b, 0x4b, 0x1c, 0x73, 0x8e, 0x4c,
-	0xd8, 0x97, 0x98, 0x4f, 0x09, 0xf5, 0x27, 0xc6, 0x7e, 0x4b, 0x6b, 0xef, 0x7b, 0xcb, 0xdc, 0x7e,
-	0x06, 0x87, 0xb9, 0x04, 0x22, 0x62, 0x54, 0xe0, 0x42, 0x0d, 0x8e, 0xa0, 0x1a, 0x91, 0x50, 0x49,
-	0xd0, 0xf0, 0x92, 0xd0, 0x3e, 0x87, 0x83, 0x81, 0xf4, 0xb9, 0x2c, 0x51, 0xcf, 0x7e, 0x08, 0x8d,
-	0x4b, 0x3c, 0xc1, 0xa5, 0x32, 0xdb, 0x7d, 0x38, 0xcc, 0x89, 0x25, 0xcd, 0x9c, 0x40, 0x1d, 0x5f,
-	0x13, 0xf9, 0x41, 0x48, 0x5f, 0xc6, 0x22, 0x6b, 0x0a, 0x12, 0x68, 0xa0, 0x10, 0xfb, 0x0c, 0xea,
-	0x7d, 0x3a, 0x62, 0x65, 0x37, 0x36, 0xa0, 0xfe, 0x86, 0x88, 0x7c, 0x02, 0xfb, 0x2d, 0x1c, 0xa4,
-	0x69, 0x76, 0xfd, 0x73, 0x80, 0xa5, 0x7d, 0xc2, 0xd0, 0x94, 0xa3, 0xd6, 0x56, 0x47, 0xbb, 0x39,
-	0xe6, 0xad, 0x55, 0xd8, 0x77, 0xa1, 0xd1, 0x9b, 0x61, 0x2a, 0x45, 0x76, 0x41, 0xe7, 0x57, 0x15,
-	0x8e, 0x96, 0xd4, 0x41, 0xba, 0x52, 0xe8, 0x3d, 0xe8, 0xa9, 0x07, 0xe8, 0xcc, 0xd9, 0xbe, 0x74,
-	0xce, 0xc6, 0x33, 0x35, 0xcf, 0xcb, 0x68, 0x59, 0xfb, 0x3d, 0xd8, 0x55, 0x06, 0xa1, 0xd3, 0xa2,
-	0x82, 0x75, 0xff, 0xcc, 0xe6, 0x5f, 0xef, 0xba, 0x97, 0xac, 0x36, 0x7a, 0x05, 0x7a, 0x6a, 0x4b,
-	0x71, 0x7f, 0x1b, 0xfe, 0x16, 0x1e, 0xf4, 0x1a, 0x6a, 0x89, 0x29, 0xe8, 0x41, 0xd1, 0x31, 0x6b,
-	0x96, 0x99, 0x25, 0x3a, 0xa3, 0x77, 0x50, 0x4b, 0xbc, 0x2a, 0x3e, 0x6c, 0xcd, 0x58, 0xf3, 0xf4,
-	0xdf, 0xa4, 0x4c, 0xaf, 0x2b, 0xd0, 0x53, 0xbb, 0x8a, 0x07, 0xdd, 0xb0, 0xd3, 0xdc, 0xbe, 0xdd,
-	0x8a, 0xf3, 0x48, 0xbb, 0x30, 0x6e, 0x6e, 0xad, 0x9d, 0xef, 0xb7, 0xd6, 0xce, 0x97, 0x85, 0xa5,
-	0xdd, 0x2c, 0x2c, 0xed, 0xdb, 0xc2, 0xd2, 0x7e, 0x2e, 0x2c, 0x6d, 0xa8, 0x2b, 0x61, 0x9e, 0xfc,
-	0x0e, 0x00, 0x00, 0xff, 0xff, 0x81, 0xbf, 0xf2, 0x2b, 0xa9, 0x05, 0x00, 0x00,
+	0x9c, 0x6c, 0x08, 0x17, 0xc4, 0x01, 0x41, 0xd3, 0x1c, 0x22, 0x28, 0x12, 0xce, 0x81, 0x23, 0x72,
+	0xec, 0x4d, 0x58, 0x91, 0xec, 0x9a, 0xdd, 0x75, 0xd4, 0xdc, 0xe0, 0xdf, 0xf5, 0xc8, 0x91, 0x13,
+	0xa2, 0xf9, 0x19, 0x9c, 0x90, 0xd7, 0x76, 0x3e, 0x4a, 0x8c, 0xb9, 0x58, 0x33, 0xcf, 0x6f, 0xbc,
+	0x6f, 0xde, 0xf3, 0x42, 0x77, 0x4c, 0xe4, 0xa7, 0x78, 0xe8, 0x04, 0x6c, 0xea, 0x86, 0x2c, 0xf8,
+	0x8c, 0xb9, 0x1b, 0x30, 0x2a, 0x7d, 0x42, 0x31, 0x0f, 0x5d, 0x3f, 0x22, 0xae, 0xc0, 0x7c, 0x46,
+	0x02, 0x2c, 0x5c, 0x7c, 0x8d, 0x83, 0x58, 0x12, 0x46, 0x57, 0x95, 0x13, 0x71, 0x26, 0x19, 0x6a,
+	0xae, 0x46, 0x9c, 0xd9, 0x53, 0x27, 0x9f, 0x30, 0x1f, 0x8e, 0x19, 0x1b, 0x4f, 0xb0, 0xab, 0x58,
+	0xc3, 0x78, 0xe4, 0xe2, 0x69, 0x24, 0xe7, 0xe9, 0x90, 0xf9, 0xe0, 0xee, 0x4b, 0x9f, 0xe6, 0xaf,
+	0x8e, 0xc7, 0x6c, 0xcc, 0x54, 0xe9, 0x26, 0x55, 0x86, 0x3e, 0x2f, 0x95, 0x2a, 0xe7, 0x11, 0x16,
+	0xee, 0x94, 0xc5, 0x54, 0xa6, 0xcf, 0x6c, 0xf2, 0xd5, 0x7f, 0x4e, 0x2e, 0xc1, 0x55, 0x95, 0x7e,
+	0xc1, 0xfe, 0x56, 0x81, 0x46, 0x97, 0x63, 0x5f, 0x62, 0x0f, 0x7f, 0x89, 0xb1, 0x90, 0xa8, 0x09,
+	0x15, 0x12, 0x1a, 0x5a, 0x4b, 0x6b, 0xdf, 0xbb, 0xd0, 0x17, 0x3f, 0x4f, 0x2a, 0xfd, 0x4b, 0xaf,
+	0x42, 0x42, 0xd4, 0x86, 0x9a, 0x88, 0x70, 0x60, 0x54, 0x5a, 0x5a, 0xbb, 0xde, 0x39, 0x76, 0xd2,
+	0x2d, 0x9d, 0x7c, 0x4b, 0xe7, 0x35, 0x9d, 0x7b, 0x8a, 0x81, 0x3a, 0xa0, 0x73, 0xc6, 0xe4, 0x48,
+	0x18, 0xd5, 0x56, 0xb5, 0x5d, 0xef, 0x98, 0xce, 0xa6, 0x8d, 0x4a, 0x93, 0x73, 0x95, 0xec, 0xe1,
+	0x65, 0x4c, 0x64, 0xc0, 0x1e, 0x8f, 0xa9, 0x24, 0x53, 0x6c, 0xd4, 0x92, 0xa3, 0xbd, 0xbc, 0x45,
+	0xc7, 0xb0, 0x2b, 0x64, 0x48, 0xa8, 0xb1, 0xab, 0xf0, 0xb4, 0x41, 0x4d, 0xd0, 0x85, 0x0c, 0x59,
+	0x2c, 0x0d, 0x5d, 0xc1, 0x59, 0x97, 0xe1, 0x98, 0x73, 0x63, 0x6f, 0x89, 0x63, 0xce, 0x91, 0x09,
+	0xfb, 0x12, 0xf3, 0x29, 0xa1, 0xfe, 0xc4, 0xd8, 0x6f, 0x69, 0xed, 0x7d, 0x6f, 0xd9, 0xdb, 0x2f,
+	0xe0, 0x30, 0xb7, 0x40, 0x44, 0x8c, 0x0a, 0x5c, 0xe8, 0xc1, 0x11, 0x54, 0x23, 0x12, 0x2a, 0x0b,
+	0x1a, 0x5e, 0x52, 0xda, 0xe7, 0x70, 0x30, 0x90, 0x3e, 0x97, 0x25, 0xee, 0xd9, 0x8f, 0xa1, 0x71,
+	0x89, 0x27, 0xb8, 0xd4, 0x66, 0xbb, 0x0f, 0x87, 0x39, 0xb1, 0x44, 0xcc, 0x09, 0xd4, 0xf1, 0x35,
+	0x91, 0x1f, 0x85, 0xf4, 0x65, 0x2c, 0x32, 0x51, 0x90, 0x40, 0x03, 0x85, 0xd8, 0x67, 0x50, 0xef,
+	0xd3, 0x11, 0x2b, 0x3b, 0xb1, 0x01, 0xf5, 0xb7, 0x44, 0xe4, 0x1b, 0xd8, 0xef, 0xe0, 0x20, 0x6d,
+	0xb3, 0xe3, 0x5f, 0x02, 0x2c, 0xe3, 0x13, 0x86, 0xa6, 0x12, 0xb5, 0xb6, 0x26, 0xda, 0xcd, 0x31,
+	0x6f, 0x6d, 0xc2, 0xbe, 0x0f, 0x8d, 0xde, 0x0c, 0x53, 0x29, 0xb2, 0x03, 0x3a, 0xbf, 0xab, 0x70,
+	0xb4, 0xa4, 0x0e, 0xd2, 0x2b, 0x85, 0x3e, 0x80, 0x9e, 0x66, 0x80, 0xce, 0x9c, 0xed, 0x97, 0xce,
+	0xd9, 0xf8, 0x4d, 0xcd, 0xf3, 0x32, 0x5a, 0x26, 0xbf, 0x07, 0xbb, 0x2a, 0x20, 0x74, 0x5a, 0x34,
+	0xb0, 0x9e, 0x9f, 0xd9, 0xfc, 0xeb, 0xbf, 0xee, 0x25, 0x57, 0x3b, 0xd1, 0x97, 0xc6, 0x52, 0xac,
+	0x6f, 0x23, 0xdf, 0x62, 0x7d, 0x77, 0xd2, 0x7d, 0x03, 0xb5, 0x24, 0x24, 0xf4, 0xa8, 0x88, 0xbf,
+	0x16, 0xa1, 0x59, 0xe2, 0x3b, 0x7a, 0x0f, 0xb5, 0x24, 0xbb, 0xe2, 0x8f, 0xad, 0x05, 0x6d, 0x9e,
+	0xfe, 0x9b, 0x94, 0xe9, 0xbb, 0x02, 0x3d, 0x8d, 0xaf, 0x78, 0xf1, 0x8d, 0x78, 0xcd, 0xed, 0xb7,
+	0x5d, 0x71, 0x9e, 0x68, 0x17, 0xc6, 0xcd, 0xad, 0xb5, 0xf3, 0xe3, 0xd6, 0xda, 0xf9, 0xba, 0xb0,
+	0xb4, 0x9b, 0x85, 0xa5, 0x7d, 0x5f, 0x58, 0xda, 0xaf, 0x85, 0xa5, 0x0d, 0x75, 0xe5, 0xf8, 0xb3,
+	0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x8b, 0xe4, 0x78, 0xce, 0xb9, 0x05, 0x00, 0x00,
 }
diff --git a/api/services/execution/execution.proto b/api/services/execution/execution.proto
index dd50e1c..cce7f01 100644
--- a/api/services/execution/execution.proto
+++ b/api/services/execution/execution.proto
@@ -11,7 +11,7 @@ import "github.com/docker/containerd/api/types/container/container.proto";
 service ContainerService {
 	rpc Create(CreateRequest) returns (CreateResponse);
 	rpc Start(StartRequest) returns (google.protobuf.Empty);
-	rpc Delete(DeleteRequest) returns (google.protobuf.Empty);
+	rpc Delete(DeleteRequest) returns (DeleteResponse);
 	rpc Info(InfoRequest) returns (containerd.v1.types.Container);
 	rpc List(ListRequest) returns (ListResponse);
 	rpc Events(EventsRequest) returns (stream containerd.v1.types.Event);
diff --git a/linux/runtime.go b/linux/runtime.go
index 023fbb3..e48bb94 100644
--- a/linux/runtime.go
+++ b/linux/runtime.go
@@ -92,16 +92,17 @@ func (r *Runtime) Create(ctx context.Context, id string, opts containerd.CreateO
 	}, nil
 }
 
-func (r *Runtime) Delete(ctx context.Context, c containerd.Container) error {
+func (r *Runtime) Delete(ctx context.Context, c containerd.Container) (uint32, error) {
 	lc, ok := c.(*Container)
 	if !ok {
-		return fmt.Errorf("container cannot be cast as *linux.Container")
+		return 0, fmt.Errorf("container cannot be cast as *linux.Container")
 	}
-	if _, err := lc.shim.Delete(ctx, &shim.DeleteRequest{}); err != nil {
-		return err
+	rsp, err := lc.shim.Delete(ctx, &shim.DeleteRequest{})
+	if err != nil {
+		return 0, err
 	}
 	lc.shim.Exit(ctx, &shim.ExitRequest{})
-	return r.deleteBundle(lc.id)
+	return rsp.ExitStatus, r.deleteBundle(lc.id)
 }
 
 func (r *Runtime) Containers() ([]containerd.Container, error) {
diff --git a/runtime.go b/runtime.go
index 6683329..797e985 100644
--- a/runtime.go
+++ b/runtime.go
@@ -26,7 +26,7 @@ type Runtime interface {
 	// Containers returns all the current containers for the runtime
 	Containers() ([]Container, error)
 	// Delete removes the container in the runtime
-	Delete(context.Context, Container) error
+	Delete(context.Context, Container) (uint32, error)
 	// Events returns events for the runtime and all containers created by the runtime
 	Events(context.Context) <-chan *Event
 }
diff --git a/services/execution/service.go b/services/execution/service.go
index cd72c2d..225da2c 100644
--- a/services/execution/service.go
+++ b/services/execution/service.go
@@ -116,7 +116,7 @@ func (s *Service) Start(ctx context.Context, r *api.StartRequest) (*google_proto
 	return empty, nil
 }
 
-func (s *Service) Delete(ctx context.Context, r *api.DeleteRequest) (*google_protobuf.Empty, error) {
+func (s *Service) Delete(ctx context.Context, r *api.DeleteRequest) (*api.DeleteResponse, error) {
 	c, err := s.getContainer(r.ID)
 	if err != nil {
 		return nil, err
@@ -125,10 +125,11 @@ func (s *Service) Delete(ctx context.Context, r *api.DeleteRequest) (*google_pro
 	if err != nil {
 		return nil, err
 	}
-	if err := runtime.Delete(ctx, c); err != nil {
+	status, err := runtime.Delete(ctx, c)
+	if err != nil {
 		return nil, err
 	}
-	return empty, nil
+	return &api.DeleteResponse{ExitStatus: status}, nil
 }
 
 func containerFromContainerd(ctx context.Context, c containerd.Container) (*container.Container, error) {