diff --git a/cmd/geth/bugcmd.go b/cmd/geth/bugcmd.go
deleted file mode 100644
index 0adc69d1fab4dc285c3f0ecd6e0b7758faa31f45..0000000000000000000000000000000000000000
--- a/cmd/geth/bugcmd.go
+++ /dev/null
@@ -1,113 +0,0 @@
-// Copyright 2017 The go-ethereum Authors
-// This file is part of go-ethereum.
-//
-// go-ethereum is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// go-ethereum is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
-
-package main
-
-import (
-	"bytes"
-	"fmt"
-	"io"
-	"io/ioutil"
-	"net/url"
-	"os/exec"
-	"runtime"
-	"strings"
-
-	"github.com/ethereum/go-ethereum/cmd/internal/browser"
-	"github.com/ethereum/go-ethereum/params"
-
-	"github.com/ethereum/go-ethereum/cmd/utils"
-	cli "gopkg.in/urfave/cli.v1"
-)
-
-var bugCommand = cli.Command{
-	Action:    utils.MigrateFlags(reportBug),
-	Name:      "bug",
-	Usage:     "opens a window to report a bug on the geth repo",
-	ArgsUsage: " ",
-	Category:  "MISCELLANEOUS COMMANDS",
-}
-
-const issueURL = "https://github.com/ethereum/go-ethereum/issues/new"
-
-// reportBug reports a bug by opening a new URL to the go-ethereum GH issue
-// tracker and setting default values as the issue body.
-func reportBug(ctx *cli.Context) error {
-	// execute template and write contents to buff
-	var buff bytes.Buffer
-
-	fmt.Fprintln(&buff, "#### System information")
-	fmt.Fprintln(&buff)
-	fmt.Fprintln(&buff, "Version:", params.VersionWithMeta)
-	fmt.Fprintln(&buff, "Go Version:", runtime.Version())
-	fmt.Fprintln(&buff, "OS:", runtime.GOOS)
-	printOSDetails(&buff)
-	fmt.Fprintln(&buff, header)
-
-	// open a new GH issue
-	if !browser.Open(issueURL + "?body=" + url.QueryEscape(buff.String())) {
-		fmt.Printf("Please file a new issue at %s using this template:\n\n%s", issueURL, buff.String())
-	}
-	return nil
-}
-
-// copied from the Go source. Copyright 2017 The Go Authors
-func printOSDetails(w io.Writer) {
-	switch runtime.GOOS {
-	case "darwin":
-		printCmdOut(w, "uname -v: ", "uname", "-v")
-		printCmdOut(w, "", "sw_vers")
-	case "linux":
-		printCmdOut(w, "uname -sr: ", "uname", "-sr")
-		printCmdOut(w, "", "lsb_release", "-a")
-	case "openbsd", "netbsd", "freebsd", "dragonfly":
-		printCmdOut(w, "uname -v: ", "uname", "-v")
-	case "solaris":
-		out, err := ioutil.ReadFile("/etc/release")
-		if err == nil {
-			fmt.Fprintf(w, "/etc/release: %s\n", out)
-		} else {
-			fmt.Printf("failed to read /etc/release: %v\n", err)
-		}
-	}
-}
-
-// printCmdOut prints the output of running the given command.
-// It ignores failures; 'go bug' is best effort.
-//
-// copied from the Go source. Copyright 2017 The Go Authors
-func printCmdOut(w io.Writer, prefix, path string, args ...string) {
-	cmd := exec.Command(path, args...)
-	out, err := cmd.Output()
-	if err != nil {
-		fmt.Printf("%s %s: %v\n", path, strings.Join(args, " "), err)
-		return
-	}
-	fmt.Fprintf(w, "%s%s\n", prefix, bytes.TrimSpace(out))
-}
-
-const header = `
-#### Expected behaviour
-
-
-#### Actual behaviour
-
-
-#### Steps to reproduce the behaviour
-
-
-#### Backtrace
-`
diff --git a/cmd/geth/main.go b/cmd/geth/main.go
index 84e734f8d2765c7ded1bc8790f9e77566002c38d..0e597f030165ed0946632d91cccf309c2802c699 100644
--- a/cmd/geth/main.go
+++ b/cmd/geth/main.go
@@ -212,7 +212,6 @@ func init() {
 		makecacheCommand,
 		makedagCommand,
 		versionCommand,
-		bugCommand,
 		licenseCommand,
 		// See config.go
 		dumpConfigCommand,
diff --git a/cmd/internal/browser/browser.go b/cmd/internal/browser/browser.go
deleted file mode 100644
index 897086f47177ddf06193a194610206fc659cfda5..0000000000000000000000000000000000000000
--- a/cmd/internal/browser/browser.go
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package browser provides utilities for interacting with users' browsers.
-package browser
-
-import (
-	"os"
-	"os/exec"
-	"runtime"
-)
-
-// Commands returns a list of possible commands to use to open a url.
-func Commands() [][]string {
-	var cmds [][]string
-	if exe := os.Getenv("BROWSER"); exe != "" {
-		cmds = append(cmds, []string{exe})
-	}
-	switch runtime.GOOS {
-	case "darwin":
-		cmds = append(cmds, []string{"/usr/bin/open"})
-	case "windows":
-		cmds = append(cmds, []string{"cmd", "/c", "start"})
-	default:
-		cmds = append(cmds, []string{"xdg-open"})
-	}
-	cmds = append(cmds,
-		[]string{"chrome"},
-		[]string{"google-chrome"},
-		[]string{"chromium"},
-		[]string{"firefox"},
-	)
-	return cmds
-}
-
-// Open tries to open url in a browser and reports whether it succeeded.
-func Open(url string) bool {
-	for _, args := range Commands() {
-		cmd := exec.Command(args[0], append(args[1:], url)...)
-		if cmd.Start() == nil {
-			return true
-		}
-	}
-	return false
-}