diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm
index c3d2f2a5a3a..bef07c38e6e 100644
--- a/code/modules/recycling/disposal.dm
+++ b/code/modules/recycling/disposal.dm
@@ -9,7 +9,7 @@
/obj/machinery/disposal
name = "disposal unit"
- desc = "A pneumatic waste disposal unit."
+ desc = "A pneumatic waste disposal unit. Alt-click to manually eject its contents."
icon = 'icons/obj/pipes/disposal.dmi'
icon_state = "disposal"
anchored = TRUE
@@ -329,6 +329,20 @@
AM.pipe_eject(0)
update()
+/obj/machinery/disposal/AltClick(mob/user)
+ if(!Adjacent(user) || !ishuman(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED))
+ return
+ user.visible_message(
+ "[user] tries to eject the contents of [src] manually.",
+ "You operate the manual ejection lever on [src]."
+ )
+ if(do_after(user, 5 SECONDS, target = src))
+ user.visible_message(
+ "[user] ejects the contents of [src].",
+ "You eject the contents of [src]."
+ )
+ eject()
+
// update the icon & overlays to reflect mode & status
/obj/machinery/disposal/proc/update()
if(stat & BROKEN)