Do we need gammas to determine $\nabla$? I know that something must be wrong with the following calculation - otherwise, the covariant derivative could be defined intrinsically on a differentiable manifold - but I don't seem to be able to find the mistake.
Let $(M,\mathcal{O},\mathcal{A},\nabla)$ be a differentiable manifold with a linear connection, taking a pair of a vector field and a $(p,q)$-tensor to another $(p,q)$-tensor. For any vector fields (($1,0$)-tensors) $X,Y\in\Gamma(TM)$, considered within a chart $u\in\mathcal{A}$, we have
$$\nabla_XY\stackrel{u}{=}X^i\cdot\nabla_{e_i}Y\stackrel{u}{=}X^i\cdot\nabla_{e_i}Y^j\cdot e_j$$
where we use the Einstein summation convention and $e_n(p)$, $1\leq n\leq\text{dim}M$, are the chart induced basis vectors at $T_pM$. We recall the Leibniz rule for covarient derivatives, i.e.,
$$\nabla_X(T(f))=(\nabla_XT)(f)+T(\nabla_Xf)$$
where $T$ is a vector field. Hence,
$$(\nabla_{e_i}Y^j\cdot e_j)(f)=\nabla_{e_i}(Y^j\cdot e_j(f))-Y^j\cdot e_j(\nabla_{e_i}f)=e_i(Y^j\cdot e_j(f))-Y^j\cdot e_j(e_i(f))$$
Due to the Leibniz rule for differentiation, we have
$$e_i(Y^j\cdot e_j(f))-Y^j\cdot e_j(e_i(f))=e_i(Y^j)\cdot e_j(f)+Y^j\cdot e_i(e_j(f))-Y^j\cdot e_j(e_i(f))$$
Therefore:
$$\nabla_XY=X^i\cdot e_i(Y^j)\cdot e_j(f)+X^i\cdot Y^j\cdot e_i(e_j(f))-X^i\cdot Y^j\cdot e_j(e_i(f))$$
So we derived an expression of the covariant derivative on a vector field that does not depend on the Gammas,
$$\Gamma^q_{ij}\cdot e_q:=\nabla_{e_i}ej\text{,}$$
that usually represent the choice necessary for differentiating vector fields on a manifold consistently. Where is the mistake in the above derivation? Did I misuse one of the two Leibniz rules somehow?
 A: I think the issue is your first "Leibniz rule" for covariant derivatives. In that equation (and in a few other places) you seem to be trying to take the covariant derivative of a function, i.e. writing something like $\nabla_X f$, while $\nabla_X$ is actually a function on vector fields. So I'll assume you mean $\nabla_X f = X(f)$. But even if this is the case, then that equation becomes
$$
X(T(f)) = (\nabla_XT)(f) + T(X(f)) \implies (\nabla_XT)(f) = X(T(f))-T(X(f)) = [X,T](f),
$$
or in other words,
$$
\nabla_XT = [X,T].
$$
Clearly this isn't the "arbitrary" connection you started with, and in fact, it's not even a connection at all, since we must have $\nabla_{fX} T = f\nabla_X T$ for all $f: X \to \mathbb{R}$ if $\nabla_X$ is a connection, but $[fX,T] \neq f[X,T]$ in general.
Edit (to reflect question in the comments).
In short, (12.8) in "Manifolds and differential geometry" is expressing "how do I covariantly differentiate $(p,q)$-tensor fields?" The equation you wrote is trying to express "what happens when I covariantly differentiate $T(f)$?" These are totally different questions, explaining why (12.8) isn't relevant for what you were trying to do. To understand this better, let's look at (12.8) more closely.
Let's fix some notation first. Fix a vector field $X$ on our manifold $M$, and let $\mathscr{T}^{(p,q)}(M)$ be the space of $(p,q)$-tensor fields on $M$. Note that $\mathscr{T}^{(1,0)}(M) = \mathscr{X}(M)$, the space of vector fields on $M$, and $\mathscr{T}^{(0,1)}(M) = \Omega^1(M)$, the space of $1$-forms on $M$.
Here's how (12.8) works. There, we assume that all we know is $\nabla_X: \mathscr{X}(M) \to \mathscr{X}(M)$. For consistency, let's write this as $\nabla_X: \mathscr{T}^{(1,0)}(M) \to \mathscr{T}^{(1,0)}(M)$. Now we want to define $\nabla_X: \mathscr{T}^{(p,q)}(M) \to \mathscr{T}^{(p,q)}(M)$ using the Leibniz rule (12.8).
To see how this works, let's practice by defining $\nabla_X: \mathscr{T}^{(0,1)}(M) \to \mathscr{T}^{(0,1)}(M)$. That is, given a $1$-form $\alpha \in \mathscr{T}^{(0,1)}(M) = \Omega^1(M)$, we want to define the $1$-form $\nabla_X\alpha \in \mathscr{T}^{(0,1)}(M) = \Omega^1(M)$. I can specify $\nabla_X\alpha$ by telling you the function $(\nabla_X\alpha)(Y)$ for all vector fields $Y \in \mathscr{X}(M)$. (Think about this pointwise; for some $x \in M$, I can specify a linear map $(\nabla_X\alpha)_x: \mathsf{T}_xM \to \mathbb{R}$ by telling you the number $(\nabla_X\alpha)_x(Y_x)$ for all vectors $Y_x \in \mathsf{T}_xM$.) So I'll define
$$
(\nabla_X\alpha)(Y) := \underbrace{X(\underbrace{\alpha(Y)}_{\text{function}})}_{\text{function}} - \underbrace{\alpha(\underbrace{\nabla_XY}_{\text{vector field}})}_{\text{function}},
$$
which is (12.8) in our present case, $p=0$ and $q=1$.
If we want to define $\nabla_X: \mathscr{T}^{(0,2)}(M) \to \mathscr{T}^{(0,2)}(M)$, then for an $(0,2)$-tensor field $\beta \in \mathscr{T}^{(0,2)}(M)$, I can similarly define the $(0,2)$-tensor field $\nabla_X\beta\in \mathscr{T}^{(0,2)}(M)$ by specifying $(\nabla_X\beta)(Y_1,Y_2)$ for all vector fields $Y_1,Y_2 \in \mathscr{X}(M)$.
Now, let's use this line of thinking to see how to translate $\nabla_X: \mathscr{T}^{(1,0)}(M) \to \mathscr{T}^{(1,0)}(M)$ into the setup of (12.8). Above, when I wanted to specify a $(0,1)$- or $(0,2)$-tensor field, I told you how it acted on all vector fields. This time, given a vector field $Y \in \mathscr{T}^{(1,0)}(M)$, I want to specify a $(1,0)$-tensor field $\nabla_X Y\in \mathscr{T}^{(1,0)}(M)$ to you. What does $\nabla_X Y$ act on? It acts on $1$-forms. (This is just linear algebra; for a finite-dimensional vector space $V$, we have $V \cong V^{**}$, so $V$ acts on $V^*$.) So to specify $\nabla_X Y\in \mathscr{T}^{(1,0)}(M)$, I can tell you the function $(\nabla_XY)(\omega)$ for all $1$-forms $\omega \in \Omega^1(M)$. This leads us to
$$
(\nabla_XY)(\omega) = \underbrace{X(\underbrace{Y(\omega)}_{\text{function}})}_{\text{function}}-\underbrace{Y(\underbrace{\nabla_X\omega}_{\text{$1$-form}})}_{\text{function}},
$$
which is (12.8) in our present case, $p=1$ and $q=0$. In your question, the $1$-form $\omega$ was replaced by a function $f$. Here, $Y$, being (locally) a function on $\Omega^1(M)$, literally takes $1$-forms like $\omega$ as inputs pointwise; at each $x \in M$, we evaluate $Y_x$ on $\omega_x$. On the other hand, $Y(f)$ is just notation; $Y$ is not being evaluated at any elements.
