diff --git src/wp-admin/includes/update.php src/wp-admin/includes/update.php
index 502666a..ffba47c 100644
--- src/wp-admin/includes/update.php
+++ src/wp-admin/includes/update.php
@@ -214,6 +214,26 @@ function update_nag() {
 add_action( 'admin_notices', 'update_nag', 3 );
 add_action( 'network_admin_notices', 'update_nag', 3 );
 
+function removed_plugin_nag() {
+	global $pagenow;
+
+	if ( ! current_user_can( 'update_plugins' ) || 'update-core.php' == $pagenow )
+		return;
+
+	$active  = get_option( 'active_plugins', array() );
+	$directory_plugins = get_option( 'directory_plugins' );
+
+	if ( ! isset( $directory_plugins['removed'] ) || empty( $directory_plugins['removed'] ) )
+		return false;
+
+	foreach( $active as $plugin_file ) {
+		if ( isset( $directory_plugins['removed'][$plugin_file]['name'] ) )
+			echo '<div class="update-nag">' . sprintf( __( 'The %s plugin has been removed from the WordPress Directory.' ), '<strong>' . $directory_plugins['removed'][$plugin_file]['name'] . '</strong>' ) . '</div>';
+	}
+}
+add_action( 'admin_notices', 'removed_plugin_nag', 3 );
+add_action( 'network_admin_notices', 'removed_plugin_nag', 3 );
+
 // Called directly from dashboard
 function update_right_now_message() {
 	$theme_name = wp_get_theme();
diff --git src/wp-includes/update.php src/wp-includes/update.php
index 597a020..ad89787 100644
--- src/wp-includes/update.php
+++ src/wp-includes/update.php
@@ -248,6 +248,53 @@ function wp_update_plugins( $extra_stats = array() ) {
 			return false;
 	}
 
+	// Keeps this code from executing when called from `wp_admin_bar_updates_menu()`. 
+	$trace = debug_backtrace();
+	if ( ! isset( $trace[2]['function'] ) || $trace[2]['function'] != 'wp_admin_bar_updates_menu' ) {
+
+		$directory_plugins = get_option( 'directory_plugins', array() );
+
+		// Check for deleted plugins in the WordPress Respository.
+		foreach( $active as $plugin_file ) {
+
+			$url = 'http://api.wordpress.org/plugins/info/1.0/' . $plugin_file;
+			if ( $ssl = wp_http_supports( array( 'ssl' ) ) )
+				$url = set_url_scheme( $url, 'https' );
+
+			// Check the Plugin repo for plugin information
+			$raw_response = wp_remote_post( $url, array(
+				'timeout' => 3,
+				'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )
+			) );
+
+			// Check for valid response
+			if ( ! is_wp_error( $raw_response ) && 200 == wp_remote_retrieve_response_code( $raw_response ) ) {
+
+				// Setup response data
+				$response = maybe_unserialize( wp_remote_retrieve_body( $raw_response ) );
+
+				$found = isset( $directory_plugins['found'] ) && array_key_exists( $plugin_file, $directory_plugins['found'] );
+				$removed = isset( $directory_plugins['removed'] ) && array_key_exists( $plugin_file, $directory_plugins['removed'] );
+
+				// Add plugins to the `found` array that exist in the Directory.
+				if ( ! $found && isset( $response->slug ) ) {
+					$directory_plugins['found'][$plugin_file]['name'] = $response->name;
+					$found = true;
+				}
+
+				// Add plugins to the `removed` array that no longer exist in the Directory.
+				if ( $found && ! $removed && $raw_response['body'] == 'N;' ) {
+					$directory_plugins['removed'][$plugin_file]['name'] = $directory_plugins['found'][$plugin_file]['name'];
+				}
+
+			}
+		
+		}
+
+		update_option( 'directory_plugins', $directory_plugins );
+
+	}
+  
 	// Update last_checked for current to prevent multiple blocking requests if request hangs
 	$current->last_checked = time();
 	set_site_transient( 'update_plugins', $current );
