Ever wondered what it feels like to build a program that deletes itself after execution? Sounds crazy, right? Well, today, we are going to do just that, build a Self-Destructing CLI Tool in Go!

This is a fun experiment, but it also introduces some cool file handling and process management techniques in Go. Let’s get started!

How It Works
The idea is simple:

  • The Go program executes normally.
  • Before exiting, it deletes its own binary file.
  • Once destroyed, the program is gone forever (unless you recompile it). 🤯

Writing the Self-Destructing Go Code

1. Initialize a Go Project
First, create a new project directory and initialize a Go module:

mkdir self_destruct && cd self_destruct
go mod init self_destruct

Create a file named self_destruct.go and add the following code:

package main

import (
 "fmt"
 "os"
 "os/exec"
)

func main() {
 fmt.Println("💀 Running self-destructing program...")

 // Get the current executable path
 exePath, err := os.Executable()
 if err != nil {
  fmt.Println("Failed to get executable path:", err)
  return
 }

 // Print the file path before deletion
 fmt.Println("Deleting:", exePath)

 // Create a command to delete the file
 if runtime.GOOS == "windows" {
     cmd = exec.Command("cmd", "/C", "del", exePath)
 } else {
     cmd = exec.Command("sh", "-c", fmt.Sprintf("rm -f %s", exePath))
 }
 cmd.Start() // Start but don't wait to prevent blocking
}

Let’s break down what this code does:

  • os.Executable() returns the absolute path of the currently running executable.
  • fmt.Println("Deleting:", exePath): Prints the file path before deletion so the user can see what’s happening.
  • exec.Command("cmd", "/C", "del", exePath) creates a command to delete the executable file.
  • .Start() runs the command asynchronously to ensure the program doesn't hang while deleting itself.

Running the Program

Compile the Program : go build .
Run the Program : ./self_destruct

The binary file deletes itself after execution! Try running it again you’ll see it’s gone.

While this was a fun experiment, there are some real-world applications:

  • Security & Privacy — Temporary scripts that auto-delete after execution.
  • Cleanup Mechanisms — Self-cleaning build artifacts.
  • One-Time Setup Scripts — Ensure scripts don’t run twice.

This was a crazy but entertaining experiment with Go’s file handling and process execution.

Would you ever use this in real life? Or have any other wacky Go ideas? Let me know! 🚀🔥

Author Of article : Siddhesh Khandagale Read full article