diff --git a/pre_commit_hooks/check_vcs_permalinks.py b/pre_commit_hooks/check_vcs_permalinks.py
new file mode 100644
index 0000000..130abf6
--- /dev/null
+++ b/pre_commit_hooks/check_vcs_permalinks.py
@@ -0,0 +1,43 @@
+from __future__ import absolute_import
+from __future__ import print_function
+from __future__ import unicode_literals
+
+import argparse
+import re
+import sys
+
+
+GITHUB_NON_PERMALINK = re.compile(
+    b'https://github.com/[^/]+/[^/]+/blob/master/[^# ]+#L\d+',
+)
+
+
+def _check_filename(filename):
+    retv = 0
+    with open(filename, 'rb') as f:
+        for i, line in enumerate(f, 1):
+            if GITHUB_NON_PERMALINK.search(line):
+                sys.stdout.write('{}:{}:'.format(filename, i))
+                getattr(sys.stdout, 'buffer', sys.stdout).write(line)
+                retv = 1
+    return retv
+
+
+def main(argv=None):
+    parser = argparse.ArgumentParser()
+    parser.add_argument('filenames', nargs='*')
+    args = parser.parse_args(argv)
+
+    retv = 0
+    for filename in args.filenames:
+        retv |= _check_filename(filename)
+
+    if retv:
+        print()
+        print('Non-permanent github link detected.')
+        print('On any page on github press [y] to load a permalink.')
+    return retv
+
+
+if __name__ == '__main__':
+    exit(main())
